Guillermo wondered whether we couldn't have

let f(x) { return x*x; };

as a shorthand for the block-bodied arrow

let f = (x) => { return x * x; }

The obvious question is how to enable expression bodies?

let f(x) x * x;

looks like it is missing the =>, but if we require that:

let f(x) => x * x;

then why not for the block-bodied case too, so readers are better reminded that `this` is from the outer scope, ditto `arguments`?

Decisions, decisions!

/be

Brendan Eich wrote:
Your point about decorators vs. hoisting is good, everyone should keep it in mind. Still doesn't mean we can't add a special form for const function, as followups aver.

/be

Alexander Jones wrote:
On 19 May 2015 at 02:02, Brendan Eich <[email protected] <mailto:[email protected]>> wrote:


    This seems like a better shorthand to discuss, compared to `let
    function` (which function-in-block covers already, as noted).


function-in-block does not have the same semantics as the proposed "let function". It hoists, thus has no TDZ, and appears to preclude a reasonable decorator syntax behaviour, and it has no provisions for const binding, i.e. "const function".

    let f(x) => y

appears attractive indeed, but by virtue of it being an arrow function, has lexical this and no prototype property. Also no generator syntax, unless I'm missing something?

Cheers
_______________
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to