Hi John, for those it is unsurprising that they would be allowed, and that they would be taken as expressions rather than declarations.
On Thu, Jun 5, 2014 at 8:23 AM, John Lenz <[email protected]> wrote: > Would this still be legal, in this scheme? > > for ((function x(){}); ;) x // 0 > for ((class x(){}); ;) x // 0 > > > > On Thu, Jun 5, 2014 at 7:58 AM, Andreas Rossberg <[email protected]> > wrote: > >> C-style for-loops allow declarations as init statements, but only some >> of them. Yet, the others (function and class) are actually >> syntactically legal in that position as well, because they are simply >> parsed as expressions. Consider: >> >> let x = 0 >> for (let x = 1; ;) x // 1 >> for (const x = 1; ;) x // 1 >> for (function x(){}; ;) x // 0 >> for (class x(){}; ;) x // 0 >> > > >> I think these latter two examples violate the principle of least >> surprise. I wonder if it wouldn't be cleaner to rule them out, by >> imposing the same lookahead restrictions on for-loop init expressions >> as there are for expression statements. >> >> The one caveat is that for function, that would actually be a breaking >> change, but is it likely to be a real world one? >> >> What do you think? >> >> /Andreas >> _______________________________________________ >> es-discuss mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> > > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > > -- Cheers, --MarkM
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

