On 13.04.2011 17:38, Kyle Simpson wrote:
See http://wiki.ecmascript.org/doku.php?id=strawman:default_operator -- the proposal there is ?? and ??= since single ? is ambiguous after an expression due to conditional expressions (?:).

The "default operator" doesn't address a significant part of what Dmitry is asking for -- the . in the ?. usage -- which allows the property access to be expressed only once and used for both the test and assignment.


let street = user.address?.street

which desugars e.g. into:

street = (typeof user.address != "undefined" && user.address != null)
   ? user.address.street
   : undefined;

Part of what Dmitry asked for, I'd like to see in the plain ?: operator, and it seems like it would be possible to disambiguate from a top-down parser perspective. I would like to see the `:` ("else condition") portion of a ?: expression be optional. For instance:

var a = b ? c;  // aka, `var a = b ? c : undefined`


Hm, intuitively the form  `a = b ? c` sounds for me as:

a = b ? b : c

Dmitry.

The other (more awkward/obscure looking) way to do this is:

var a;
b && a = c;

The difference between the sytnax sugar I'm asking for and the "default operator" in the strawman is that ?: (or &&) allows for separate expressions for the test (`b`) and the success_value (`c`), whereas ?? requires that the test expression and success_value be the same expression.

For instance:

var a = (b > 5) ? b : undefined;

In this case, the ?? "default operator" is of no use. But being able to drop the `: undefined` part, and also avoid using the more awkward looking && syntax, would certainly be a useful sugar.


--Kyle



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

Reply via email to