for-loops and declaration-like init expressions
Mark S. Miller
erights at google.com
Thu Jun 5 10:01:30 PDT 2014
Having this be legal as an expression makes the language more complex from
the programmer's perspective than either
* prohibiting this, by allowing only expression-statements as expressions
here, or
* accepting any declaration in this position.
I would be surprised if the status quo were simpler than both of these
alternatives from a spec perspective either. Why would this be so?
On Thu, Jun 5, 2014 at 9:50 AM, Allen Wirfs-Brock <allen at wirfs-brock.com>
wrote:
> Over and beyond the breaking change WRT function, I really don’t see the
> value in such a restriction. There are many pointless or nonsensial things
> that can be written as expressions. In general, we don’t complicate the
> language to make such things illegal.
>
> Allen
>
>
> On Jun 5, 2014, at 7:58 AM, Andreas Rossberg <rossberg at google.com> 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
> > es-discuss at mozilla.org
> > https://mail.mozilla.org/listinfo/es-discuss
> >
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
--
Cheers,
--MarkM
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140605/a34db2f0/attachment.html>
More information about the es-discuss
mailing list