識別子とは変数、関数そしてラベルなどに使用する名前のことです。この識別子に使用できるのは、
です。ただし予約語と同一の名前は、識別子にできません。
Unicode文字が使用できることにより、漢字なども使用できます。よって
var 名前 = '田中';
のような記述も可能です。
すでに使用されている名前で変数や関数を定義すると、それを再定義することになり、それらは使えなくなります。
function foo()
{
}
function Func()
{
var foo = foo();
// 「TypeError: foo is not a function」のように例外が発生する。
}
var foo = foo();
// fooは undefinedとなる。
Func();
C言語などでは文の終わりをセミコロン (;) で表すことになっていますが、JavaScriptでは1つの行に1つの文を記述する場合には、文末のセミコロンを省略できます。それはAutomatic Semicolon Insertion (ASI) により、文末にセミコロンがない場合には自動的にセミコロンが挿入されて解釈されるからなのですが、このことが問題となることがあります。
たとえば、
return
true;
と記述した場合には
return;
true;
と解釈されるため、結果としてundefinedが返されることになります。よって、セミコロンは省略すべきではありません。
var func = function(){} // TypeError: (intermediate value)(...) is not a function
(function(){})();
この場合1行目の文末にセミコロンがないと、TypeError例外が発生します。
コードの先頭に'use strict';の記述をすることで、問題となる恐れのあるコードでエラーが発生するようにできます。