(Almost) everything is expression

Brendan Eich brendan at mozilla.com
Fri Nov 11 15:47:11 PST 2011


On Nov 11, 2011, at 10:25 AM, gaz Heyes wrote:

> On 11 November 2011 18:01, Dmitry Soshnikov <dmitry.soshnikov at gmail.com> wrote:
> var foo = {
>  // do stuff
>  100;
> };
> 
> What would be the result of a labelled statement? You'd need labels to work within expressions since you'd probably want to do:
> x=loop:for(i=0;i<10;i++){
> }
> 
> but then what if you do:
> x=1/loop:for(i=0;i<10;i++){
> }
> 
> Is 1 divided by the result of the for loop or is it divided by undefined?

My last reply suggested making unlabeled keyword-statement (statements that start with a reserved identifier) be assignment expressions, so if you remove the loop: label, you would have to parenthesize:

x=1/(for(i=0;i<10;i++){
})

to get it to compile. If we extend things to support LabelledStatement as well as KeywordStatement as right parts of AssignmentExpression, then you'd still need parens and it would all work.

I haven't thought through other potential issues with labels, though.

As noted, blocks in parentheses are *out*. No can do.

/be
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20111111/97a231f4/attachment-0001.html>


More information about the es-discuss mailing list