オブジェクトリテラルのプロパティリストの末尾要素の","というのは、
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時間を返して欲しい。