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

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎const: Fix bug
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎変数名: JavaScriptの場合、未宣言の変数への代入はstrictモードでなければエラーにはならず、発見困難なバグの原因となるミススペルを出さない事は特に重要です。
タグ: 2017年版ソースエディター
155 行
 
== 変数名 ==
JavaScriptの変数名は、関数・プロパティ・ラベルなどとおなじく識別子(しきべつし;Identifier);''Identifier'')の規約に従います。
JavaScriptの識別子は、Unicode の文字、$、_、数字(0-9)からなります。識別子は大文字小文字を区別します。
識別子は数字(0-9)からはじまってはいけません。
また予約語(よやくご;keyword)キーワード(''keyword'')を識別子に使うことは出来ません。
変数名関数名もプロパティな重複は許されませんがラベル名との重複は許されます。
 
:<syntaxhighlight lang="JavaScript">
const primeNumber = 57; // OK
const prime_number = 57; // OK
167 行
</syntaxhighlight>
 
外部に公開しない変数名に[[Java]]と同様慣習的に<syntaxhighlight lang="javascript" inline>var variableNamesLikeThisf = true; let i = 0; const E = 2.73;</syntaxhighlight>のようにあえて短めにし、一時的[[:w:キャメルケ変数であることを伝えようとする傾向がありますが、コディング規約で定めていない限りリラック|キャメルケース]]した名付け用いら行われます。
ただし、日本語の単語をローマ字表記した変数名はスオsh府出来ません。
外部に公開しない変数はあえて短めにし、一時的な変数であることを伝えようとする傾向がありますが、コーディング規約で定めていない限りリラックスした名付けが行われます。
ただし日本語の単語をローマ字表記した変数名単数複数の区別がないので <syntaxhighlight lang="javascript" inline>for (letconst item in items) {}</syntaxhighlight>の様な名付けが行えなえません。
、'''月'''のつもりで '''tuki''' と綴ったら ReferenceError: '''tsuki''' is not defined と翻字のゆらぎでミスタイプとなる可能性を増やすので推奨しません
JavaScriptの場合、未宣言の変数への代入はstrictモードでなければエラーにはならず、発見困難なバグの原因となるミススペルを出さない事は特に重要です。
さらに、この例ではtukiがmoonなのかmonthなのかにも曖昧さが生じ、いっそ <syntaxhighlight lang="javascript" inline>var 月</syntaxhighlight> の方が良いのかもとさえ思えます
 
Unicodeの文字が有効なので
:<syntaxhighlight lang="JavaScript">
var π = 4 * Math.atan(1);
</syntaxhighlight>