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 a, b;
a = b = 0;
要么:
var a = 0, b = a;
这将确保 a
和 b
都是局部变量。