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