1. ホーム
  2. javascript

[解決済み】JavaScriptによる複数回の左手課題

2022-04-14 16:06:38

質問

var var1 = 1,
    var2 = 1,
    var3 = 1;

これと同等である。

var var1 = var2 = var3 = 1;

変数が定義されている順番は、var3, var2, var1 の順で間違いないと思いますが、これと同じ意味になります。

var var3 = 1, var2 = var3, var1 = var2;

JavaScriptで確認する方法はないでしょうか? もしかしてプロファイラとか使って?

解決方法は?

実は

var var1 = 1, var2 = 1, var3 = 1;

ない と等価である。

var var1 = var2 = var3 = 1;

違いはスコープにあります。

function good() {
  var var1 = 1, var2 = 1, var3 = 1;
}

function bad() {
  var var1 = var2 = var3 = 1;
}

good();
console.log(window.var2); // undefined

bad();
console.log(window.var2); // 1. Aggh!

実は、これは代入が右結合であることを示しています。これは bad の例と同等である。

var var1 = (window.var2 = (window.var3 = 1));