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