The Existential Operator

Andri Möll andri at dot.ee
Tue May 20 04:26:37 PDT 2014


Oh, one shouldn't ignore the difference between falsy and undefined. Implementing this in terms of falsyness will end up breaking someNumber?.toString() given a zero or someString?.length given an empty string. 

Andri

> On 20 May 2014, at 12:55, A Matías Quezada <amatiasq at gmail.com> wrote:
> 
> I think the current use of this operator will only make sense if the operator interrupts the whole sentence so
> 
>     a?.b.c
> 
> Will be the same as
> 
>     a && a.b.c
> 
> And
> 
>     a?().b?.c?.d
> 
> Will be same as
> 
>     a && (x = a(), x.b && (x.b.c && x.b.c.d))
> 
> ---
> A. Matías Quezada
> Senior Javascript Developer
> amatiasq at gmail.com
> 
> 
> 
> 2014-05-20 11:31 GMT+02:00 Claude Pache <claude.pache at gmail.com>:
>> Le 20 mai 2014 à 05:50, Dmitry Soshnikov <dmitry.soshnikov at gmail.com> a écrit :
>> 
>> > Hi,
>> >
>> > (I remember, I mentioned this couple of years ago, but not sure about whether it was considered, etc)
>> >
>> > Will the "Existential Operator" for properly accessors be something interesting to consider for ES7 spec? Currently CoffeeScript uses it well.
>> >
>> > ```js
>> > var street = user.address?.street;
>> > ```
>> >
>> > The `street` is either the value of the `user.address.street` if the `address` property exists (or even if it's an object), or `null` / `undefined` otherwise.
>> >
>> > This (roughly) to contrast to:
>> >
>> > ```js
>> > var street = user.address && user.address.street;
>> > ```
>> >
>> > (the chain can be longer in many cases).
>> >
>> > The same goes with methods:
>> >
>> > ```js
>> > var score = user.getPlan?().value?.score;
>> > ```
>> >
>> > If potentially it could be interesting for ES7, I'll be glad helping with the proposal, grammar and algorithm (unless it was considered previously, and decided that it's not for ES for some reason).
>> >
>> > P.S.: I tried to solve this issue using default values of destructuring assignment, but it doesn't help actually.
>> >
>> > Dmitry
>> 
>> Question: What is the semantics of the following:
>> 
>>         a?.b.c
>> 
>> Is it the same thing as
>> 
>>         (a?.b).c
>>         (a && a.b).c
>> 
>> or the same thing as:
>> 
>>         a && a.b.c
>> 
>> (For the sake of the argument, just ignore the distinction between "falsy" and "null/undefined".)
>> If it is the second option, I fear that the semantics of the so-called "existential operator" is more complicated than just an "operator".
>> 
>> —Claude
>> 
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140520/bcf4cc09/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2314 bytes
Desc: not available
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140520/bcf4cc09/attachment.p7s>


More information about the es-discuss mailing list