ECMAScript 5.1 の規格書を読んで発見したこと

ECMAScript 5.1、別の言い方では Ecma-262、通称 JavaScript の規格書を読んで、僕的にいくつか驚いたことをまとめておきます。

規格書は以下から参照できます。

日本語訳もあるのですが、僕は原典をあたることをお勧めします。

識別子に Unicode が使えること

以下は ChromeJavaScript コンソール。

変数「ほげ」を評価して "ほげほげ" が表示されています。

debugger という予約語が存在すること(将来のための予約語ではなく)

以下は Chrome で debugger 構文を使用した画面。わかりづらいですが、後ろの灰色部分は Chrome ブラウザです。

ブレークポイントのようにその場所で止められます。

デバッグしにくいと評判だった JavaScript に一筋の光が差し込みました。

setter/getter のための構文があること

以下はオブジェクトに setter/getter をつけて、プロパティにアクセスしている様子。

Java みたいなレガシーさはなく、C# のようなモダンな構文。

setter は引数を複数取れるようなので、例えばフルネームを設定して返す、というような感じに使えそうです。

プロパティと同じ名前は付けられないようです。たしかに、どちらなのか判断できなくなるので。

return の後に改行してはいけない

以下のスクリプトを見てください。

関数 foo は 0 を返しているのですが、結果を受け取った result は undefined です。return の後の式が省略された場合、undefined が返されるという仕様になっています。

規格書の 7.9 には以下のように記載されており:

Certain ECMAScript statements (empty statement, variable statement, expression statement, do-while statement, continue statement, break statement, return statement, and throw statement) must be terminated with semicolons.

要約すると「特定の文(空、... return 文、throw 文)はセミコロンで終わらなければならない」と記載されています。しかしその後に「しかしながら、利便性のためにこうしたケースではセミコロンは省略してもよい。省略した場合は自動的に補われる」とのことです。


なるほど。