Destructuring object outside of var declaration

Brendan Eich brendan at mozilla.com
Tue Sep 17 07:39:04 PDT 2013


Allen reminded me to mention that destructuring assignment, as opposed 
to binding, allows arbitrary LeftHandSideExpression in the patterns, as 
opposed to Identifiers. If someone wants to use that extravagence in an 
object pattern destructuring assignment, they can put parens around the 
whole thing.

/be

> Brendan Eich <mailto:brendan at mozilla.com>
> September 17, 2013 10:27 AM
>
> That's it. Lars Hansen originated destructuring for ES4 and 
> implemented array patterns in Futhark (Opera's engine of the time), 
> but not object patterns. His first proposal used
>
> &{a: x, b: y} = foo
>
> for just the reason you cite, but no one was keen on the ASI hazard 
> (previous line must end with a semicolon). We cut the & pretty soon in 
> ES4's evolution.
>
> I say use var/let/const, it's better style; or else suffer a 
> parentheses tax. This is pretty much a non-issue in practice, AFAICT.
>
> /be
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
> Nathan Wall <mailto:nathan.wall at live.com>
> September 17, 2013 10:06 AM
> I'm wondering what the best syntax is for object destructuring outside 
> of a var declaration.  For instance, the following works in Firefox 
> Nightly and Traceur:
>
>     var { a, b } = foo;
>
> but the following doesn't:
>
>     var a, b;
>     { a, b } = foo;
>
> I presume this is because in the second case the { a, b } is a block.
>
> However, the following does work:
>
>     var a, b;
>     ({ a, b }) = foo;
>
> Is the above what people are expected to use (when they need to use 
> destructuring outside of a var/let declaration or function arguments), 
> or is there another form available?
>
> Thanks,
> Nathan
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss


More information about the es-discuss mailing list