Errors in syntax for array destructuring?

Brendan Eich brendan at mozilla.com
Fri Oct 15 08:34:22 PDT 2010


On Oct 14, 2010, at 11:47 PM, Dominic Cooney wrote:

> On the harmony:destructuring page
> <http://wiki.ecmascript.org/doku.php?id=harmony:destructuring> it
> specifies this syntax for patterns:
> 
> Pattern ::= "{" (Field ("," Field)*)* "}"
>          | "[" ((Pattern | LValue)? ",")* "]"
> Field   ::= Identifier (":" (Pattern | LValue))?
> LValue  ::= <any lvalue expression allowed in a normal assignment expression>
> 
> Is it intentional that commas aren't required between fields of an
> object pattern, for example, {x y}? That seems concise, but odd.
> SpiderMonkey doesn't support this syntax.

There is a comma (",") in the first EBNF production you cite from the wiki, just after the meta-left-parenthesis:

> Pattern ::= "{" (Field ("," Field)*)* "}"


> Likewise, why aren't trailing commas permitted in object destructuring
> as they are in object literals? SpiderMonkey accepts trailing commas.

That is a good point, probably just an oversight. ECMA-262 doesn't use EBNF and we'd need to translate it into the spec's grammar. Thanks for noticing this.


> Finally, surely trailing commas aren't *required* in array
> destructuring? The second alternative seems to indicate that they are.

Fixed -- thanks again.

/be



More information about the es-discuss mailing list