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