「JavaScript/変数」の版間の差分

削除された内容 追加された内容
→‎変数のスコープ: 「関数スコープをもつ」の意味の説明が抜けている。
205 行
== 変数のスコープ ==
=== 基本 ===
変数が使え値を保持する範囲のことを変数のスコープといいます。JavaScriptでは、関数と、if文・for文とでは、スコープが異なります。

このことを、<code>var</code>で宣言された変数は'''関数スコープ'''をもち持つとも言います。<code>if</code>文や<code>for</code>文などのブロックはスコープを作りません。
 
<syntaxhighlight lang="JavaScript">
233 ⟶ 235行目:
console.log(x); // 1
</SyntaxHighlight> -->
実行結果は「21」です。プログラムは上から実行するので、上記コードの場合は結果的に最初に{}ブロック内の <code> document.write(x); // 2 </code>が実行され、次に{}ブロック外の<code> document.write(x); // 1 </code>が実行されるからです。<code> </code>
 
上記コードの実行結果は「21」です。プログラムは上から実行するので、上記コードの場合は結果的に最初に{}ブロック内の <code> document.write(x); // 2 </code>が実行され、次に{}ブロック外の<code> document.write(x); // 1 </code>が実行されるからです。<code> </code>
上記の''x''は関数の中と外では違う変数になるので、外側の''x''の値は変わりません。一方で、下記の''x''はブロックの中と外で同じ変数を指すので、''x''の値が変わってしまいます。
 
上記の''x''は関数の中と外では違う変数になるので、外側の''x''の値は変わりません。一方で、下記冒頭''<code>var x''はブロック = 1;</code>中と外で同じ変数を指すので、''x''の値が変わってしす。
 
一方で、下記の''x''はブロックの中と外で同じ変数を指すので(varは関数スコープを持つが、しかしif文のスコープは持たないので)、''x''の値が変わってしまいます。
 
<syntaxhighlight lang="JavaScript">