lexical for-in/for-of loose end

Andreas Rossberg rossberg at google.com
Mon Feb 6 07:44:48 PST 2012

On 6 February 2012 16:28, Brendan Eich <brendan at mozilla.org> wrote:
> Andreas Rossberg wrote:
>> Agreed. As long as we don't spec something weird, the extra effort for
>> implementations shouldn't be much more than that of an extra block
>> around the loop body.
> To take Allen's best shot and re-fire it, what do you think should happen
> here?
>  for (let i = 0, skip2 = function(){i++}; i < N; i++) {
>    foo();
>    if (bar())
>      skip2();
>  }

Pretty much the same as in

  let i_ = 0, skip2_ = function(){i_++};
  for (; i_ < N; i_++) {
    let i = i_, skip2 = skip2_;
    if (bar())

Probably not what the programmer expected, but as others have said,
it's a trade-off. This use case seems rare, rather obfuscated style
IMHO, and you can easily work around it. So probably not something you
want to be optimizing the language semantics for.


More information about the es-discuss mailing list