optional "function" keyword

Brendan Eich brendan at mozilla.org
Wed Mar 7 08:09:33 PST 2012


Big grammatical issues remain unresolved with the expression-bodied 
short function syntax. For sure.

But ignoring expression bodies, just considering any shorter function 
syntax that starts with ( params ) ..., we will have trouble reaching 
consensus in Ecma TC39. To recap a bit:

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

"This cover grammar approach may be future-hostile without, e.g., 
extending guards 
<http://wiki.ecmascript.org/doku.php?id=strawman:guards> to be legal in 
expressions."

We could resolve to allow guards in expressions, and get past this one.

Another lingering objection to arrows is this-binding (=> vs. ->).

Another minor objection is to having arrows + curly braces (vs. 
alternatives such as block-lambdas). But JS won't have indentation-based 
blocks, and block-lambdas are incommensurate in some ways with mere 
shorter function syntax.

/be

Andreas Rossberg wrote:
> I'm a little bit confused here. Wasn't arrow syntax "(args) ->  expr"
> shot down earlier because it is too difficult to parse for both human
> and machine? I don't understand how "(args) expr" can possibly be any
> better in this regard. (And I don't believe that a mandatory function
> name in front, like suggested by Isaac, makes a difference either
> way.)
>
> If we are going for any of this (and I'm all for it!), then the arrow
> form seems much more readable (even if -- or rather, because -- it is
> 2 characters longer).
>
> /Andreas
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>


More information about the es-discuss mailing list