Поиск…
Цепочные присвоения в объявлениях 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