Szukaj…


Łączenie zadań w deklaracje var.

Łączenie łańcuchów w ramach deklaracji var spowoduje niezamierzone utworzenie zmiennych globalnych.

Na przykład:

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

Spowoduje to:

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

W powyższym przykładzie a jest lokalne, ale b staje się globalne. Wynika to z oceny od prawej do lewej operatora = . Tak więc powyższy kod faktycznie został oceniony jako

var a = (b = 0);

Prawidłowy sposób łączenia przypisań var jest:

var a, b;
a = b = 0;

Lub:

var a = 0, b = a;

Pozwoli to upewnić się, że zarówno i a b będą zmienne lokalne.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow