JavaScriptの予約語

まずはJavaScript*1予約語がこんな感じ。

abstract boolean break byte
case catch char class
const continue default delete
do double else extends
false final finally float
for function goto if
implements import in instanceof
int interface long native
new null package private
protected public return short
static super switch synchronized
this throw throws transient
true try typeof var
void while with

ぱっと見Java+αなんだけど、volatilestrictfpがなかったりassertenumがないんで、Java1.1相当(?)な感じになっている。しかもほとんどが使っていない・・・ 使ってるのは強調したやつで、ほかは未来のための予約語・・・って、classとかinterfaceとか、プロトタイプベースのオブジェクト指向言語で必要あるのか?って気はする。なんたって今でもJavaのクラス相当の機能はfunction、つまり関数をベースに実現しているわけだし*2。あと、synchronizedはともかく、nativetransientなんかは絶対使われないだろうな、とか。
falsenulltrue予約語に入れていいかどうか微妙。まぁ変数名等にしてはいけないって点では予約語だけど、これはあくまで特別な変数(特別な定数)だし。voidもビルトイン関数なのか演算子なのか微妙だし。また今度調べる必要がありそうだ。

*1:ここではJavaScript1.2ってことで。1.3からは更にcommentdebuggerenumexportlabelvolatileが追加された。

*2:調べてみると[http://www.interq.or.jp/student/exeal/dss/mozilla_translation/js20/:title=JavaScript2.0ではclassとかあるそうな]。また予約語増えるのか・・・ それよりもまだ1.2で十分な俺をどうにかしてくれ。