fail-fast object destructuring (don't add more slop to sloppy mode)

Brendan Eich brendan at
Wed Jan 2 13:13:36 PST 2013

Brendan Eich wrote:
> Yes, I already agreed (three times :-|) that nil rescues ?. from the 
> condemnation ARB heaped on the CoffeeScript semantics.
> That's not relevant to what we were just arguing about though: whether 
> nil rather than undefined should be an observable result of either 
> destructuring or (you seemed to say just above) property gets on plain 
> old objects! 

Apologies, I did not make the full idea clear:

You want nil in the language and observable via desugaring

   o.?p.q  ==> (o.p == null ? nil : o.p).q

without re-evaluating o.p of course (and using the syntax you showed). 
Furthermore, in the case where o.p == null, the result is nil.q which is 

(Please correct me if I am wrong on any of this! Appreciate the 
discussion here.)

What I would like to do: spec ?. without exposing nil. Perhaps this is 
not possible but I think it is, since we can make the definite semantics 
for o.?p.q or whatever syntax we want (I advocate o.p?.q) do a final 
censoring act that converts nil back to undefined.

You could be right that we want nil and ?. together -- no way to 
decouple risk. I'm not seeing that argument yet. People want ?. 
yesterday, nil not so much (see twitter).


More information about the es-discuss mailing list