文法

識別子 (identifier)

識別子とは変数関数そしてラベルなどに使用する名前のことです。この識別子に使用できるのは、

  • ASCII文字
  • 数字 (文字の先頭以外)
  • アンダースコア (_)
  • ドル記号 ($)
  • Unicode文字 (※ ECMAScript v3標準 以降)

です。ただし予約語と同一の名前は、識別子にできません。

Unicode文字が使用できることにより、漢字なども使用できます。よって

var 名前 = '田中';

のような記述も可能です。

識別子の再定義

すでに使用されている名前で変数や関数で定義すると、すでに使用されている変数や関数を再定義することになり、それらは使えなくなります。

function foo()
{
}

function bar()
{
    var foo = foo();
    // 「TypeError: foo is not a function」のように例外が発生する。
}

var foo = foo();
// fooは undefinedとなる。

bar();

文末のセミコロン

C言語などでは文の終わりをセミコロン (;) で表すこととなっていますが、JavaScriptでは1つの行に1つの文を記述する場合には、行末のセミコロンを省略できます。それはAutomatic Semicolon Insertion (ASI) により、行末にセミコロンがない場合には自動的にセミコロンが挿入されて解釈されるからなのですが、このことが問題となることがあります。

たとえば、

return
    true;

と記述した場合には

return;
    true;

と解釈されるため、結果としてundefinedが返されることになります。よって、セミコロンは省略すべきではありません

文末にセミコロンが必要な場合

var foo = function(){} // TypeError: (intermediate value)(...) is not a function
(function(){})();

この場合1行目の文末にセミコロンがないと、TypeError例外が発生します。

Strictモード (Strict mode)

コードの先頭に'use strict';の記述をすることで、問題となる恐れのあるコードでエラーが発生するようにできます。