return when desugaring to closures

David-Sarah Hopwood david.hopwood at
Tue Oct 14 08:26:51 PDT 2008

Neil Mix wrote:
> The for/closures "bug" is definitely a newbie trap, but its pain is  
> not its discovery, but the difficulty of working around it.  To me  
> this could be a winning argument against re-binding on each loop,  
> since re-binding precludes the (admittedly dubious) use-case of  
> updating inside the body:
> for (let i = 0; i < 100; i++) {
>    if (skipAhead) {
>      i += 9;
>      continue;
>    }
>    ...
> }

The expansions that MarkM and I posted work correctly in that case.

("Correctly" means what a C programmer would expect :-) To be more
specific, updates within the body take effect for the instance of
the variable that is seen by the update expression for the next

David-Sarah Hopwood

More information about the Es-discuss mailing list