How did "let x" in for-loops land:

for (let x = 1; x < 10 ; i++) {
  // is "x" a fresh binding for every iteration?
}

This wouldn't be "block" scoping either.


On Thu, Jan 30, 2014 at 8:13 AM, Brendan Eich <[email protected]> wrote:

> John Barton wrote:
>
>
>> On Thu, Jan 30, 2014 at 7:54 AM, Brendan Eich <[email protected]<mailto:
>> [email protected]>> wrote:
>>
>>     John Lenz wrote:
>>
>>         Generally, I've always thought of:
>>
>>         "if (x) ..." as equivalent to "if (x) { ... }"
>>
>>
>>     let and const (and class) are block-scoped. {...} in your "if (x)
>>     {...}" is a block. An unbraced consequent is not a block, and you
>>     can't have a "conditional let binding".
>>
>>     The restriction avoids nonsense such as
>>
>>     let x = 0; { if (y) let x = 42; alert(x); }
>>
>>     What pray tell is going on here, in your model?
>>
>>
>> I'm with John: the alert should say 0 and I can't see why that is not
>> obvious.
>>
>
> Interesting!
>
> You don't want the alert to show undefined, so the extent of the inner
> binding in your model is the unbraced consequent of the  "if".
>
> That is not "block scope" in any plain sense.
>
> /be
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to