On Oct 19, 2011, at 8:16 AM, Allen Wirfs-Brock wrote:

> ES3 (and ES5) defines these grammar productions:
> 
> MemberExpression :
> 
>    PrimaryExpression
>    FunctionExpression
>    MemberExpression [ Expression ]
>    MemberExpression . IdentifierName
>  new MemberExpression Arguments
> 
> 
> PrimaryExpression :
> 
>    this
>    Identifier
>    Literal
>    ArrayLiteral
>    ObjectLiteral
>    ( Expression )
> 
> 
> FunctionExpression :
> 
>   function  
> 
> Identifieropt ( FormalParameterList ) { FunctionBody }
> 
> Does anybody know or see a good reason why FunctionExpression shouldn't be 
> move as a RHS of PrimaryExpression? MemberExpression is the only occurrence 
> of either PrimaryExpression or FunctionExpression on the RHS of a grammar 
> rule.
> 
> Function expressions were added in ES3. Were they just added at the wrong 
> place in the grammar?

Thanks for raising this, I keep forgetting to.

Oddly enough, SpiderMonkey always had them (prior to ES3 even being drafted) as 
PrimaryExpressions. No one can observe the difference, as you note. Either way, 
one can write

  var fun_member = function () {}.member;

On aesthetic grounds, I would prefer the grammar to make function expressions 
primary.

/be

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to