Errors in syntax for array destructuring?

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

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

> On the harmony:destructuring page
> <> 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.


More information about the es-discuss mailing list