「JavaScript/変数」の版間の差分
削除された内容 追加された内容
クリーンアップ |
→関数スコープ: let との比較 |
||
193 行
(function() {
var x =
console.log(x); //
})();
200 行
</syntaxhighlight>
上記コードの実行結果は
上記コードの実行結果は 21 です。プログラムは上から実行するので、上記コードの場合は結果的に最初に{}ブロック内の <code> console.log(x); // 2 </code>が実行され、次に{}ブロック外の<code> console.log(x); // 1 </code>が実行されるからです。<code> </code>▼
a
1
▲
上記の''x''は関数の中と外では異なる変数になるので、外側の''x''の値は冒頭の<code>var x = 1;</code>のままです。
一方で、下記コードの''x''はブロックの中と外で同じ変数を指すので(<code>var</code>で宣言された変数は関数スコープを持ちますが<code>if</code>文
<syntaxhighlight lang="JavaScript">
210 ⟶ 212行目:
if (x === 1) {
var x =
console.log(x); //
}
console.log(x); //
</syntaxhighlight>
なので実行結果は
です。
244 ⟶ 246行目:
にはなりません。
また、1秒ほど経過した後3行同時に表示する動きになります。
ブロックスコープの let では、
<syntaxhighlight lang="JavaScript">
let x = 1;
if (x === 1) {
let x = "a";
console.log(x); // a
}
console.log(x); // 1
</syntaxhighlight>
実行結果は
a
1
です。
=== ブロックスコープ ===
|