Brendan Eich (2013-11-29T18:49:36.000Z)
Nick Krempel wrote:
> Slight correction: bring in line with "for in" and "for of" only - 
> since the condition part of the "for" does not allow this currently.

Right, and for (let...;;) has (consensus reconfirmed last meeting) a 
fresh let binding per iteration (and one for the pre-loop scope if 
there's a closure in the first part of the head that captures a let 
binding -- turns out Dart does the same thing).

It's too late for ES6, but if (let ...), while (let ...), and switch 
(let ...) seem unproblematic to consider for ES7. I like them, we've 
talked about them more "off" than "on" over the years, I'm not sure why 
they never gained a champion.

"do {...} while (let ...);" is troublesome, though -- the condition is 
at the bottom but the binding would be hoisted to the "do". Yes, it can 
be made to work, but the return of hoisting, no TDZ, smells. I'd skip it.

/be
domenic at domenicdenicola.com (2013-12-10T01:40:46.077Z)
Nick Krempel wrote:
> Slight correction: bring in line with "for in" and "for of" only - 
> since the condition part of the "for" does not allow this currently.

Right, and `for (let...;;)` has (consensus reconfirmed last meeting) a 
fresh let binding per iteration (and one for the pre-loop scope if 
there's a closure in the first part of the head that captures a let 
binding -- turns out Dart does the same thing).

It's too late for ES6, but `if (let ...)`, `while (let ...)`, and `switch (let ...)` seem unproblematic to consider for ES7. I like them, we've 
talked about them more "off" than "on" over the years, I'm not sure why 
they never gained a champion.

`do {...} while (let ...);` is troublesome, though -- the condition is 
at the bottom but the binding would be hoisted to the `do`. Yes, it can 
be made to work, but the return of hoisting, no TDZ, smells. I'd skip it.