Suche…
Verkettung von Zuweisungen in var-Deklarationen.
Durch das Verketten von Zuweisungen als Teil einer var Deklaration werden unbeabsichtigt globale Variablen erstellt.
Zum Beispiel:
(function foo() {
var a = b = 0;
})()
console.log('a: ' + a);
console.log('b: ' + b);
Wird darin enden, dass:
Uncaught ReferenceError: a is not defined
'b: 0'
Im obigen Beispiel ist a lokal, aber b wird global. Dies liegt an der Bewertung von rechts nach links des Operators = . Der obige Code wurde also als ausgewertet
var a = (b = 0);
Die korrekte Art, Var-Zuweisungen zu verketten, ist:
var a, b;
a = b = 0;
Oder:
var a = 0, b = a;
Dadurch wird sichergestellt, dass sowohl a als auch b lokale Variablen sind.
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow