JavaScript/Identifier
Identifier
(識別子)は、JavaScript のプログラム内で変数、関数、プロパティ、ラベルなどを一意に識別するために使用される名前です。識別子はプログラムの各要素に名前を付け、それらを参照するために使用されます[1]。
構文
識別子の命名規則は以下の通りです:
<IdentifierName> ::= <IdentifierStart> | <IdentifierName> <IdentifierPart> <IdentifierStart> ::= <UnicodeIDStart> | "$" | "_" | "\" <UnicodeEscapeSequence> <IdentifierPart> ::= <UnicodeIDContinue> | "$" | "\" <UnicodeEscapeSequence> | <ZWNJ> | <ZWJ>
- 識別子の構文規則
IdentifierName
- 識別子の名前を表します。
- 以下のいずれかで構成されます:
IdentifierStart
(識別子の最初の文字)IdentifierName
にIdentifierPart
を続けたもの(識別子の2文字目以降)
IdentifierStart
- 識別子の最初の文字として使用できる文字を定義します。
- 以下のいずれかです:
UnicodeIDStart
: Unicodeの「ID_Start」プロパティを持つ文字(例: アルファベット、一部の漢字など)。$
(ドル記号)。_
(アンダースコア)。\
に続くUnicodeEscapeSequence
(Unicodeエスケープシーケンス)。
IdentifierPart
- 識別子の2文字目以降に使用できる文字を定義します。
- 以下のいずれかです:
命名規則
基本的なルール
例
有効な識別子の例
以下のプログラムは、有効な識別子の例を示しています。
// 有効な識別子 let name = "John"; let _privateVar = 42; let $price = 19.99; let camelCase = true; let PascalCase = "Class Name"; let number1 = 100; let α = "alpha"; let π = 3.14159; let 名前 = "日本語の識別子";
このプログラムでは、様々な有効な識別子を使用して変数を宣言しています。アルファベット、アンダースコア、ドル記号で始まる識別子や、Unicode 文字を含む識別子も使用可能です。
無効な識別子の例
以下のプログラムは、無効な識別子の例を示しています。
// 無効な識別子(コンパイルエラーになります) let 1number = 100; // 数字で始まっている let my-variable = "hello"; // ハイフンを含んでいる let var = "reserved"; // 予約語を使用している let function = "reserved"; // 予約語を使用している let my variable = "space"; // スペースを含んでいる
このプログラムでは、JavaScript の識別子の命名規則に違反する例を示しています。これらの識別子を使用するとSyntaxError
が発生します。
識別子の使用例
以下のプログラムは、様々なコンテキストでの識別子の使用例を示しています。
// 変数の識別子 let userName = "Alice"; // 関数の識別子 function calculateTotal(price, quantity) { return price * quantity; } // オブジェクトのプロパティの識別子 const user = { id: 1, firstName: "Bob", lastName: "Smith" }; // クラスの識別子 class Person { constructor(name) { this.name = name; // プロパティの識別子 } sayHello() { // メソッドの識別子 console.log(`Hello, ${this.name}!`); } } // ラベルの識別子 outerLoop: for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { if (i * j >= 3) break outerLoop; console.log(i, j); } }
このプログラムでは、変数、関数、オブジェクトのプロパティ、クラス、メソッド、ラベルなど、様々なコンテキストでの識別子の使用例を示しています。
注意点
- 予約語:
break
,case
,catch
,class
,const
,continue
,debugger
,default
,delete
,do
,else
,export
,extends
,false
,finally
,for
,function
,if
,import
,in
,instanceof
,new
,null
,return
,super
,switch
,this
,throw
,true
,try
,typeof
,var
,void
,while
,with
,yield
などは予約語であり、識別子として使用できません[2]。 - 将来の予約語:
enum
,implements
,interface
,package
,private
,protected
,public
などは将来の予約語として扱われる場合があります。 - グローバル変数:
window
,document
,console
などのグローバル変数の名前は、混乱を避けるために識別子として使用しないことが推奨されます。 - 命名規則: 一般的に、変数や関数にはキャメルケース(
myVariable
)、クラスにはパスカルケース(MyClass
)、定数には大文字のスネークケース(MAX_VALUE
)を使用することが慣習とされています。