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