JavaScriptの識別子の命名規則についてまとめました。
毎回不安になってググっている気がしたので、自分へのメモもかねて…
-
そもそも識別子とは
そもそも識別子とは、要は、スクリプトを構成する要素につけられている名前のこと。
変数はもちろん、関数やメソッド、ラベル、クラスなどは、すべてそれがなんであるかを識別するために名前を持っている。
その名前は、比較的自由に決めることができるが、それでも最低限の命名規則がある。
-
1文字目は、英字/アンダースコア(_)/ドル記号($)のいずれか
-
2文字目以降は、1文字目で使える文字、もしくは数字のいずれか
-
変数名に含まれる英字の大文字/小文字は区別される
-
JavaScriptで意味を持つ予約語でないこと
4番で出てきた「予約語」とは、JavaScriptにおいて、もともと何かしらの機能が定義されているもので、一覧として、以下のものがある。
- break
- case
- catch
- class
- const
- continue
- debugger
- default
- delete
- do
- else
- export
- extends
- finally
- for
- function
- if
- import
- implements *
- in
- instanceof
- interface *
- new
- package *
- private *
- protected *
- public *
- return
- super
- switch
- this
- throw
- try
- typeof
- var
- void
- while
- with
- yield
(*がつくものはStrictモードのみ)
また、将来的によっやくごとして採用される可能性があるキーワードやJavaScriptですでに定義されていオブジェクトやそのメンバー名などは、使用してもエラーにはならないが、識別子としての使用は避けるべき。
理由としては、識別子として使用することで、もともと定義されていた機能が使えなくなるため。
-
より読みやすいコードを書くために(補足)
命名規則ではないですが、コードをより読みやすくするためには、以下の点にも気を付ける。
- 名前からデータの中身が推測しやすい(name、title)
- 長すぎず、短すぎず
- 見た目が紛らわしくない
- 1文字目の「_」は、特別な意味を持つので使わない
- あらかじめ決められた書き方で統一する
- 基本的には英単語とする
5番目に関しては、以下のようなものがある。
camelCase記法
└ 先頭単語の頭文字は小文字、それ以降の単語の頭文字は大文字(firstName)
Pascal記法
└ すべての単語の頭文字は大文字(FirstName)
アンダースコア記法
└ 単語同士を「_」で連結(first_name)
基本的には、変数や、関数名は camelCase記法、定数名は アンダースコア記法