... who the hell thought this up? And most importantly: why?
So, you create a mutable binding, meaning if you manipulate
i it will affect the loop like a var, but at the same time a separate, non-propagating scope for each loop is required (making a for loop in effect a recursion) to treat
i as a different variable for each iteration as-if it was passed as a constant into it...
That's confusing as hell -- is
i mutable or non-mutable? "yes"
Also, the references pointed at are for the more common for..of and for..in situation, where this makes perfect sense, not C-style for(;;) loops where it creates confusion like above as to the state of the let-ed variable.
Thanks for the report though, I'll find a way to implement this nonsense -- it's in the spec after all.
Issue #1432