> Brendan and Dave mention explicit semicolon. Yes, it's seems so by the 
> grammar (though, have to check more precisely), but it can be acceptable 
> price.

It's a serious price, though. Today if I write:

    if (q) { ... }
    else { ... }
    (f())

then ASI kicks in after the else body. If we make if-statements into 
expressions, then either the above becomes a single expression, which is a 
serious and subtle backwards-incompatible change, or we define lookahead 
restrictions on ExpressionStatement, and introduce a refactoring hazard:

    x = if (q) { ... }
        else { ... }
    (f())                 // oops, this is now a parameter list on the RHS of 
the assignment!

I'm not positive, but that seems like a serious issue to me.

> Though, it can be visually _really_ ambiguous with object initialisers in 
> case of using labels inside the block:

A JS grammar needs to be formally unambiguous, so it requires very careful 
specification. Syntax design for JS is very tricky.

> Nope, have to think more on this...

You might want to take a look at this:

    http://wiki.ecmascript.org/doku.php?id=strawman:block_vs_object_literal

Dave

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to