(x) => {foo: bar}

Domenic Denicola d at domenic.me
Mon Jan 5 11:46:05 PST 2015


What do you think the chances of this are in ES7+? That is, how backward-compatible is this change? The linked strawman doesn't seem to touch on `() => { foo: bar }` as a back-compat hazard. Do you feel hopeful?

-----Original Message-----
From: es-discuss [mailto:es-discuss-bounces at mozilla.org] On Behalf Of Brendan Eich
Sent: Monday, January 5, 2015 14:41
To: Calvin Metcalf
Cc: es-discuss
Subject: Re: (x) => {foo: bar}

See

http://wiki.ecmascript.org/doku.php?id=strawman:block_vs_object_literal

This could be done, but not for ES6. Sorry I didn't push this harder, earlier.

/be

Calvin Metcalf wrote:
> this seems like a footgun and has tripped people up in the wild
> https://twitter.com/jankrems/status/544645776518184960
>
> On Mon Jan 05 2015 at 2:05:52 PM Caitlin Potter 
> <caitpotter88 at gmail.com <mailto:caitpotter88 at gmail.com>> wrote:
>
>     > In the implementations I checked, this is actually allowed, but
>     it's parsed as a label instead of what you may expect at first
>     glance (an object).
>
>     For it to be a concise body, you need to change it to `let f = (x)
>     => ({foo: bar});`. Otherwise, it's like a regular function body.
>
>     On Mon, Jan 5, 2015 at 2:02 PM, Frankie Bagnardi
>     <f.bagnardi at gmail.com <mailto:f.bagnardi at gmail.com>> wrote:
>
>         let f = (x) => {foo: bar};
>
>         In the implementations I checked, this is actually allowed,
>         but it's parsed as a label instead of what you may expect at
>         first glance (an object).
>
>         Is there any reason this is allowed?  If there's no reason
>         other than to match function(){}, this should be a syntax
>         error, in my opinion.
>
>         A potentially easier and wider reaching solution here would be
>         to restrict labels in strict mode to demand a possible
>         break/continue, else it's a syntax error.  The only area I'd
>         be concerned about compatibility is low level generated
>         JavaScript.
>
>         Thoughts?
>
>         _______________________________________________
>         es-discuss mailing list
>         es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
>         https://mail.mozilla.org/listinfo/es-discuss
>
>
>     _______________________________________________
>     es-discuss mailing list
>     es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
>     https://mail.mozilla.org/listinfo/es-discuss
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
es-discuss at mozilla.org
https://mail.mozilla.org/listinfo/es-discuss


More information about the es-discuss mailing list