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