Recherche…


Chaînage des assignations dans les déclarations var.

Le chaînage des assignations dans le cadre d'une déclaration var créera involontairement des variables globales.

Par exemple:

(function foo() {    
    var a = b = 0;
})()
console.log('a: ' + a);
console.log('b: ' + b);

Aura pour résultat:

Uncaught ReferenceError: a is not defined
'b: 0'

Dans l'exemple ci-dessus, a est local mais b devient global. Ceci est dû au droit à l’évaluation de l’opérateur = . Le code ci-dessus a donc été évalué comme

var a = (b = 0);

La manière correcte de chaîner les affectations var est la suivante:

var a, b;
a = b = 0;

Ou:

var a = 0, b = a;

Cela garantira que a et b seront des variables locales.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow