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;

这将确保 ab 都是局部变量。