JavaScript

識別子と予約語

 識別子というのは名前のことです。JavaScriptでは、識別子を使って変数や関数を指定します。また、特定のループのラベルとして識別子を使うことができます。

 変数名は、識別子と呼ぶこともあります。識別子の命名には、ある一定のルールがあり、識別子の命名規則に従わない場合には JavaScriptの実行時にエラーが発生します。

識別子の命名規則

 JavaScriptでは、次のルールに従って識別子の命名を行います。

 つまり、識別子の先頭に数字を記述することはできません。これは、JavaScriptが数字と識別子を簡単に区別できるようにするためです。識別子の例を以下に示します。


i
my_variable_name
v13
_dummy
$str

 可搬性や編集のしやすさを考慮に入れて、識別子には ASCII文字と数字だけを使うのが一般的です。しかし、JavaScriptでは、Unicode文字集合の文字や数字を識別子に利用できる、ということを覚えておいてください(正確に言えば、ECMAScript標準では、識別子の2文字目以降には、カテゴリ Mn、Mc、Pc の文字が使えます)。このため、非英語言語の変数名を使ったり、数学的な記号を変数名に使ったりできます。以下に例を示します。


var sí = true;
var π = 3.14;

 他の言語と同じように、JavaScript自身が使うために、ある識別子群を予約しています。これらの「予約語」は通常の識別子としては使えません。以下に予約語を挙げておきます。

予約語

 予約語とは、プログラムによってあらかじめ用途が決められているキーワードのことです。以下に挙げるようなキーワードは、プログラム中で識別子として使うことはできません。

break
case
catch
class
const
continue
debugger
default
delete
do
else
export
extends
finally
for
function
if
import
in
instanceof
new
return
super
switch
this
throw
try
typeof
var
void
while
with
enum

let break = "breakは予約後のためエラー";    // エラーが発生!
let breakTea = "これはエラーにならない";

 さらに、以下のキーワードは、通常の JavaScriptコードであれば識別子として使えますが、JavaScript実行時に厳しくエラーチェックする strictモードの場合は予約語として扱われ識別子には使えません。現在の JavaScriptは、Strictモードを前提に実行するべきなので、以下のキーワードも識別子として使わないようにしましょう。

implements
let
private
public
yield
interface
package
protected
static

識別子の現実的な命名規則

 識別子の命名規則を守らない場合には、JavaScriptの実行時にエラーが発生します。しかし、ここで挙げているのはあくまで最低限守るべき規則なので、実際にはもう少し限定的な命名規則を使う必要があります。

 例えば、エスケープシーケンスという特殊な文字列は、命名規則としても問題なく使用できます。しかし、現実的には、エスケープシーケンスを変数名に使うことはまずありません。このような特殊な文字列を変数名に使うと、不要なバグを招くからです。そのため、現実的に開発の時に使う命名規則は、以下のようになります。

予約後は使用しない
❌ break
⭕ breakSomething
1文字目は、基本的にアルファベットの小文字から始める
❌ _world
⭕ world
※ _ や $ は、一般的には特別な意味がある変数に使います。
同じ文字の並びで大文字、小文字のみで区別を行う識別子は使用しない
❌ Metal と metal
⭕ gold と silver
変数名からそのデータの役割が推測できるようにする
❌ s、m
⭕ sports、musicなど

一般的な識別子の命名規則

 識別子の命名には、一般的にキャメルケース、スネークケース、または(限定的な状況で)パスカルケースといった手法が使われます。

スネークケース

 スネークケースでは、単語と単語をアンダースコア( _ )で結合し、全て小文字で表現します。


let person_name = "太郎";
let favarite_place_in_japan = "札幌";

 小文字とアンダースコアで構成された識別子が、蛇が地上を這っているように見えるため、スネークケースと呼びます。

キャメルケース

 キャメルケースでは、単語と単語を結合して、1つ目の単語は小文字で始め、2つ目以降の単語の先頭は大文字にします。


let personName = "太郎";
let favoritePlaceInJapan = "札幌";

 結合された部分がラクダのコブのように見えるため、キャメルケースと呼びます。

 近年のトレンドとしては、変数名や関数名にはキャメルケースを使います(ES5あたりまでは変数名や関数名にスネークケースが使われていましたが、近年ではキャメルケースが主流です)。

パスカルケース

 パスカルケースは、キャメルケースと似ていますが、一番最初の単語も大文字で始めます。一般的にパスカルケースは、コンストラクタ関数やクラスで使用されるため、それら以外には使わないようにしましょう。これは、開発者間の暗黙的なルールの1つです。


// クラスの場合
class MyClass { }

// コンストラクタ関数の場合
function My Function() { }

// 一般的な変数にはパスカルケースは使用しない
let PersonName = "太郎";