<div dir="ltr">Would this still be legal, in this scheme?<br><div class="gmail_extra"><br></div><div class="gmail_extra">  for ((function x(){}); ;) x  // 0<br>  for ((class x(){}); ;) x  // 0</div><div class="gmail_extra">

<br></div><div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 5, 2014 at 7:58 AM, Andreas Rossberg <span dir="ltr"><<a href="mailto:rossberg@google.com" target="_blank">rossberg@google.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">C-style for-loops allow declarations as init statements, but only some<br>


of them. Yet, the others (function and class) are actually<br>
syntactically legal in that position as well, because they are simply<br>
parsed as expressions. Consider:<br>
<br>
  let x = 0<br>
  for (let x = 1; ;) x  // 1<br>
  for (const x = 1; ;) x  // 1<br>
  for (function x(){}; ;) x  // 0<br>
  for (class x(){}; ;) x  // 0<br></blockquote><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<br>
I think these latter two examples violate the principle of least<br>
surprise. I wonder if it wouldn't be cleaner to rule them out, by<br>
imposing the same lookahead restrictions on for-loop init expressions<br>
as there are for expression statements.<br>
<br>
The one caveat is that for function, that would actually be a breaking<br>
change, but is it likely to be a real world one?<br>
<br>
What do you think?<br>
<br>
/Andreas<br>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div><br></div></div>