サーチ…
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;
これにより、 a
とb
両方がローカル変数になるようになります。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow