The Existential Operator

Brendan Eich brendan at
Tue May 20 09:36:00 PDT 2014

Dmitry Soshnikov wrote:
> Will the "Existential Operator" for properly accessors be something 
> interesting to consider for ES7 spec? Currently CoffeeScript uses it well.

Please see

and find "ARB: This is non-compositional". Citing text for reader 

  Existential Operator (strawman discussion)

(Presented by Brendan Eich, Mozilla)

Significant desire include a null and undefined check in syntax/operator 
form (a la coffeescipt)

|     o = {}
     r = o?.p.q.r
     r = o?.p?.q.r

Mixed discussion about the needs and use cases as they apply to 
coffeescript code.

ARB: This is non-compositional

|     o = {}
     r = o?.p.q.r
     r = (o?.p).q.r
     r = o?.p.q.r()

Results in…

|     var o, r;
     o = {};
     r = o != null ? o.p.q.r : void 0;
     r = (o != null ? o.p : void 0).q.r;
     r = o != null ? o.p.q.r() : void 0;


DH: Why not an operator that needs to be explicit?

|     o?.p?.q?.r

LH: Why would you ever even use it on the first?

BE: Forget all of the problems with coffeescript's impl, the need exists.

YK: In the common cases, where it works, it works well. Where it 
doesn't, it falls apart unexpectedly.

WH: What about other contexts such as p?[x], p?.q[x], and p?(x) ? [Note 
that grammar problems arise for some of those.]

General agreement.

*Conclusion/Resolution* Seems useful, but not now. Semantics are unclear


The notes ended a bit too optimistically in my view! "Non-starter".

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list