Allow Object Destructoring when assigning

# Sebastian Malton (6 years ago)

An HTML attachment was scrubbed... URL: esdiscuss/attachments/20180322/dd1553ad/attachment

# Isiah Meadows (6 years ago)

It's not easy to parse for similar reasons async arrow functions are a bitch to parse, but it appears possible (it'd force a shift instead of a reduce, and it'd reinterpret the RHS unambiguously as a pattern) with a [no LineTerminator here] before the = token.

Isiah Meadows me at isiahmeadows.com

Looking for web consulting? Or a new website? Send me an email and we can get started. www.isiahmeadows.com

# Claude Pache (6 years ago)

Le 22 mars 2018 à 20:51, Sebastian Malton <sebastian at malton.name> a écrit :

Currently object destructoring is only allowed during variable declaration, however it would be useful, and seems rather odd from a usage standpoint, that it cannot be done during assignment.

Example: This is a allowed:

const { a } = b;

But this is not:

let a;

if (...) {
    { a } = b.c;
}

Sebastian Malton

This is already allowed, but you have to use some artefact in order to force the parser not to interpret{ as the beginning of a block:

let a ;
({ a } = b);
# Isiah Meadows (6 years ago)

Oops...I misinterpreted the original email. :-)

As for forcing reinterpretation, I stand by my suggestion in an earlier reply:

It's not easy to parse for similar reasons async arrow functions are a bitch to parse, but it appears possible (it'd force a shift instead of a reduce, and it'd reinterpret the RHS unambiguously as a pattern) with a [no LineTerminator here] before the = token.


Isiah Meadows me at isiahmeadows.com

Looking for web consulting? Or a new website? Send me an email and we can get started. www.isiahmeadows.com