restrictions on let declarations

Brendan Eich brendan at
Thu Jan 30 07:54:06 PST 2014

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?


More information about the es-discuss mailing list