[javascript] Q. 識別子とは?

A.
変数や関数、ラベルの名前はあらかじめ決められた命名規則に従って
つける必要があります。

Fifth Edition of ECMA-262 では以下のように定義されています。


1文字目に利用できる文字
UnicodeLetter
$
_
\ UnicodeEscapeSequence

2文字目以降に利用できる
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
\ UnicodeEscapeSequence
UnicodeLetterとは
any character in the Unicode categories "Uppercase letter (Lu)", "Lowercase letter (Ll)", "Titlecase letter (Lt)", "Modifier letter (Lm)", "Other letter (Lo)", or "Letter number (Nl)".
Uppercase letter (Lu)は字の大文字
Lowercase letter (Ll)は字の小文字
Titlecase letter (Lt)は見出し文字に使うアルファベット
Modifier letter (Lm)は文字修飾子
Letter number (Nl)はローマ数字

UnicodeCombiningMarkとは
any character in the Unicode categories "Non-spacing mark (Mn)" or "Combining spacing mark (Mc)"
Non-spacing mark (Mn)は、アクセント記号
Combining spacing mark (Mc) 他の文字

UnicodeDigitとは
any character in the Unicode category "Decimal number (Nd)"
Decimal number (Nd)は数字

UnicodeConnectorPunctuationとは
any character in the Unicode category "Connector punctuation (Pc)"
Connector punctuation (Pc)は句読点
になります。

unicodeを意識しないのであれば、
1文字目には、英字、アンダースコア、ドル記号
2文字目以降は、それに加えて数字
で識別子を決めておけば最低限の要件は満たされます。

また、あらかじめJavaScript内で使われているキーワードは利用できません。
どのようなキーワードが利用できないか確認してみましょう。

予約語
break do instanceof typeof
case else new var
catch finally return void
continue for switch while
debugger function this with
default if throw
delete in try


将来的に予約語として使われる可能性があるキーワード
class enum extends super
const export import


Strictモード用に予約されている
implements let private public yield
interface package protected static


その他にもJavaScriptのプログラム実行時にグローバルオブジェクトに追加される
標準グローバルオブジェクトのプロパティやビルトイン関数や実行環境で展開されるプロパティや関数にも注意する必要があります。

参考:Safariで展開されるキーワード
参考:Safariで展開されるキーワード2
参考:Safariで展開されるキーワード3

標準グローバルオブジェクトで追加される使われるキーワードは
以下のようになります。

グローバルオブジェクト/コンストラクタ
Boolean Number String Array
Object Function RegExp Date

グローバルオブジェクト/エラー
Error EvalError RangeError ReferenceError
SyntaxError TypeError URIError

グローバルオブジェクト/非コンストラクタ関数
decodeURI decodeURIComponent encodeURI encodeURIComponent
eval isFinite isNaN parseFloat
parseInt

グローバルオブジェクト/その他
Infinity Math NaN undefined


参考サイト:
ECMAScript web site [雑記] 識別子名に使える文字
MDN JavaScript Reference