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