On Tue, Jun 19, 2012 at 4:35 PM, Allen Wirfs-Brock <al...@wirfs-brock.com>wrote:
> > Ah, interesting...so this is actually close to what I was advocating for > this particular case. However, if I now understand correctly you are > saying that > fun?.call() > produces undefined if fun is null/undefined but will throw if fun is > defined as: > fun = new Object; > because it doesn't have have "call" property. > Yes, exactly. > Also, it isn't clear to me why the second example > (window.method?.call(window, args)) is only guarding for null and not > undefined. Is it only because you guard for undefined on variable > references and not on property references? > Ha ha, loose equality strikes again! It's actually guarding for both null and undefined. It's the only place that CoffeeScript purposefully uses the in-all-other-cases-avoided != operator. undefined == null, right? Ah, again. I don't think Brendan's strawman will produce that result. The > ...?.i is going to get undefined when it does GetValue on the Reference > produced for object.property. Then undefined.can will throw in step 5 of > 11.2.1 because the LHS is undefined. Getting this behavior seems to > requires modifying . as well as defining ?. > I'm afraid I can't speak to the spec language or strawman ... but the basic idea with soaking is to short-circuit evaluation as soon as the soak fails. In the same way that: window || a.b.c ... won't error even if a is entirely undeclared ... window.a?.b.c ... won't error even if a is entirely undeclared.
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss