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