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 都是區域性變數。