Поиск…


Цепочные присвоения в объявлениях var.

Назначение цепочек как часть объявления var будет непреднамеренно создавать глобальные переменные.

Например:

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

Это приведет к:

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

В приведенном выше примере a является локальным, а b становится глобальным. Это связано с оценкой справа налево оператора = . Таким образом, приведенный выше код фактически оценивался как

var a = (b = 0);

Правильный способ назначения цепочек var:

var a, b;
a = b = 0;

Или же:

var a = 0, b = a;

Это позволит убедиться, что и a и b будут локальными переменными.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow