home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

JavaScript/オブジェクトリテラルのプロパティリストの末尾要素の","について

JavaScript/オブジェクトリテラルのプロパティリストの末尾要素の","について

JavaScript / オブジェクトリテラルのプロパティリストの末尾要素の","について
id: 442 所有者: msakamoto-sf    作成日: 2009-09-26 15:28:52
カテゴリ: JavaScript 

オブジェクトリテラルのプロパティリストの末尾要素の","というのは、

var o = {
    abc : 123,
    def : 456,
             ^ ここのこと
};

である。

結論から言うと、ECMAの仕様上は末尾要素の","は定義されていない。つまり文法エラーとされても問題ない。
IE6/7/8の場合はエラーとなった。
一方Firefox3/3.5, Chrome3などではエラーにならなかった。

ECMA262, 11.1.5 Object Initialiserより:

ObjectLiteral :
    { }
    { PropertyNameAndValueList }

PropertyNameAndValueList :
    PropertyName : AssignmentExpression
    PropertyNameAndValueList , PropertyName : AssignmentExpression

このように、末尾要素の","は定義されていない。

PHPやPythonなど近年のスクリプト言語の多くが配列やハッシュ形式の末尾の","を許してくれているので、JavaScriptでもついつい残したままにしてしまう。Firebugが便利なので、当初はFirefox上で作っていて、末尾","が残ったままIEで動作確認すると正体不明のエラーに遭遇した。ということでよくよく調べたらIE系は末尾","をまじめにエラーとしていただけの話。

いや、でも、マジで一昨日の私の3時間を返して欲しい。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-09-26 15:51:01
md5:388aa4f88eaeb207d2f1e9e4381c07b3
sha1:d262953f3608fa6d857ca62d794d1a63d3195b3e
コメント
コメントを投稿するにはログインして下さい。