「JavaScript/変数」の版間の差分
削除された内容 追加された内容
→const: <code>const</code> で宣言された変数と<code>let</code> で宣言された変数との違い * <code>const</code> で宣言された変数は、初期化が必須 * <code>const</code> で宣言された変数は、代入式の左辺に出来ない タグ: 2017年版ソースエディター |
→var: プログラマが意図的に'''未宣言のグローバル変数'''を作ることはホボあり得えませんが、スペルミスが'''未宣言のグローバル変数''' を作ってしまう主な原因です。ローマ字(日本語のラテン文字翻字)には、何種類も流儀があるので識別子をローマ字表記するのは、少なくとも動的言語には向きません(危険です) タグ: 2017年版ソースエディター |
||
230 行
特別な理由があるとき以外は、 const あるいは let で宣言してください。
<syntaxhighlight lang="javascript">▼
var x = 2;
console.log(x + 3); // x + 3 を評価した結果の 5 を表示
240 ⟶ 239行目:
=== 未宣言のグローバル変数 ===
宣言を行う前に変数に代入することはできます。
:<syntaxhighlight lang="javascript">
x = 2;
console.log(x + 3); // x + 3 を評価した結果の 5 を表示
</syntaxhighlight>
: 宣言を行っていない変数に値を代入することも可能で'''未宣言のグローバル変数'''を生成します。
ただし、'''未宣言のグローバル変数の生成は[[JavaScript/strictモード|strictモード]]では SyntaxError になる'''ことからも判る通り'''非推奨'''です。
未宣言のグローバル変数の挙動は予測困難で難解なバグの原因になりえます。
このため、未宣言のグローバル変数はつくらないよう必ず {{code|const}}, {{code|let}} または <code>var</code> で宣言しましょう。
{{See also|[[JavaScript/関数|varの巻上げ]]}}
;ミススペルの産物
: プログラマが意図的に'''未宣言のグローバル変数'''を作ることはホボあり得えませんが、スペルミスが'''未宣言のグローバル変数''' を作ってしまう主な原因です。
var x;▼
▲:<syntaxhighlight lang="javascript">
/*
* 少し長めの行数
*
*/
hensuu = "abc"; // ミススペルで出来てしまった「未宣言のグローバル変数」
</syntaxhighlight>
: ローマ字(日本語のラテン文字翻字)には、何種類も流儀があるので識別子をローマ字表記するのは、少なくとも動的言語には向きません(危険です)
;代入をする時、それまでの値の型と違う型であっても構いません。▼
:<syntaxhighlight lang="javascript">
var x = 8;
console.log(x); // 8 を表示
x = "abc"; // 違う型のオブジェクトを代入
console.log(x); // abc を表示
</syntaxhighlight>
:JavaScriptは動的な言語なので「変数はオブジェクトに名前を提供し参照の手助け」をしていることを端的に表しています。▼
▲代入をする時、それまでの値の型と違う型であっても構いません。
▲JavaScriptは動的な言語なので「変数はオブジェクトに名前を提供し参照の手助け」をしていることを端的に表しています。
== 変数のスコープ ==
|