識別子、文字列または数がありません。
Firefox や Chrome では正常に動作する Javascript が、IE では「識別子、文字列または数がありません。」というエラーになることが。さっぱり意味が分かんなくて調べてみたんですけど、結構あちこちのブログで取り上げられています。IE ではオブジェクトリテラルの最後のメンバの後ろにカンマがある場合に出るみたいです。
var person = { lastName: '鈴木', firstName: '一郎', age: 25, // ←ここにカンマがあるとエラー };
C 言語などで、配列を中括弧で初期化する場合に最後の要素の後ろにもカンマを付けることが認められているので、ついついこのケースでもカンマを入れたくなってしまうんですが、意識して付けないようにした方がよさそうです。
ちなみに、WSH で実行するときも同じエラーになります。当然か。
ECMA の仕様ではどうなってるのかな…。
- 11.1.5 Object Initialiser
- An object initialiser is an expression describing the initialisation of an Object, written in a form resembling a literal. It is a list of zero or more pairs of property names and associated values, enclosed in curly braces. The values need not be literals; they are evaluated each time the object initialiser is evaluated.
- Syntax
- ObjectLiteral :
- { }
- { PropertyNameAndValueList }
- { PropertyNameAndValueList , }
- PropertyNameAndValueList :
- PropertyAssignment
- PropertyNameAndValueList , PropertyAssignment
- PropertyAssignment :
- PropertyName : AssignmentExpression
- get PropertyName ( ) { FunctionBody }
- set PropertyName ( PropertySetParameterList ) { FunctionBody }
- PropertyName :
- IdentifierName
- StringLiteral
- NumericLiteral
- PropertySetParameterList :
- Identifier
下線の行は、ECMA-262, Edition 3 には存在しません。Edition 5 (4 ?) で許容されるようになったってことでしょうかね。
トラックバック
- このエントリーにトラックバック:
- http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/2550
コメント