On Feb 15, 2012, at 6:14 AM, Andy Wingo wrote:

> On Wed, 2012-02-15 at 12:55 +0100, Andy Wingo wrote:
> 
>>  function f(x) {
>>    bar(); // ???
>>    for (let y of x) {
>>      function bar() { ... y ... }
>>      bar(); // OK
>>    }
>>    bar(); // ??? 
>>  }
> 
> Did I just get wtfjs'd here?  Is this `bar' not a source element, and
> therefore this is a function expression and not a declaration?

No, in ES5 and earlier the above is not syntactically valid code, blocks 
contains  StatementLists rather than SourceElements and FunctionDeclaration can 
not occur in StatementLists.  Nor can a ExpressionStatement begin with an 
unparenthesized FunctionExpression.  Even ignoring the let, there is no valid 
interpratation of the above in unextended ES5.

In ES6, FunctionDeclarations are allowed in StatementLists

> 
> Sheepishly yours,
> 
> Andy
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
> 

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

Reply via email to