On 11.11.2011 11:43, David Herman wrote:
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.

Yes, all this relatively true, but personally I don't see the big issue. In practice we already have such a case e.g. for FD (function declaration) vs. FE (function expression).

The former doesn't require semicolon, the later does. Though, in the later case (FE), today most of programmers put explicit semicolon to avoid problems with scripts minimizing. From this viewpoint it's not a big price, since even now the programmers are already used to such cases.

Regarding old code it's also not the issue since there is no such old code, it's a syntax error. And even if a user will refactor code (to make it look shorter and elegantly), she should be aware about this case (again -- just like with FD and FE -- users are aware about it):

Was:

var x;

if (q) {
  x = 10;
} else {
  x = 20;
}

Becomes:

let x = if (q) {
  10;
} else {
  20;
};

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


Yep, I've seen it before briefly; will check it more precisely later, thanks.

Dmitry.

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

Reply via email to