Les globals c’est mal car cela introduit des side-effects dans ton code :
Si tu écris :
var noSideEffectFunction = function(counter) {
return counter + 3;
};
tu sais très bien ce que va te retourner noSideEffectFunction(5)
, tandis que:
var sideEffectFunction = function() {
return window.currentCounter + 3; // Les globals sont accessibles via window en JS
};
là c’est plus compliqué, en tout cas incompréhensible à la lecture du code.
L’idée générale en programmation, c’est donc de limiter les side-effects au maximum, et de faire des programmes le plus stateless possible (toute forme d’état est une variable globale en puissance eg. le contenu d’un fichier, une variable d’environnement, etc.)
Bien-sûr on ne peut pas faire sans état, mais si tu penses tous tes programmes comme des transformateurs d’états, avec l’état d’entrée en paramètre et qui retourne l’état de sortie, tu évites les side-effects.
Si tu veux apprendre les bases de la programmation fonctionnelle, je t’invite à lire cet excellent article :
https://maryrosecook.com/blog/post/a-practical-introduction-to-functional-programming