« retourner à la page principale du blog
Encore un mot sur les variables en JavaScript
Dans un précédent article, je parlais de la portée des variables en JavaScript. Je veux revenir sur les variables globales pour ajouter quelques détails.
Quand on déclare une variable en dehors de tout objet ou fonction, une chose qui peut surprendre, c’est qu’on assigne en fait cette variable comme étant une propriété de window. Les notations suivantes, en dehors d’une fonction ou d’un objet, sont donc équivalentes:
var variable = 40;
variable = 40;
window.variable = 40;
On peut même pousser encore un peu plus loin et dire la même chose des fonctions. Quand on déclare une fonction, on assigne en fait la fonction à son nom. Et son nom est une propriété de window. Voici un peu de code pour rendre plus clair; encore une fois, les notations suivantes sont équivalentes:
function maFonction(){ alert("Tada!"); }
maFonction = function(){ alert("Tada!"); }
window.maFonction = function(){ alert("Tada!"); }
L’utilitée de savoir ça se révèle quand on veut passer des fonctions en paramètre à d’autres fonctions (ce qu’on appelle générallement callback function). On pourrait écrire:
function maFonction(){ alert("Tada!"); }
setTimeout(maFonction, 1000);
Mais, si on veut, on peut ne pas assigner la fonction à window et simplement passer le code en paramètre:
setTimeout(function(){ alert("Tada!"); }, 1000);
Ce genre de notation est très utilisée dans les libraries comme jQuery.
