サーチ…


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;

これにより、 ab両方がローカル変数になるようになります。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow