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.
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