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 <amati...@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
> amati...@gmail.com
> 
> 
> 
> 2014-05-20 11:31 GMT+02:00 Claude Pache <claude.pa...@gmail.com>:
>> Le 20 mai 2014 à 05:50, Dmitry Soshnikov <dmitry.soshni...@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@mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

Attachment: smime.p7s
Description: S/MIME cryptographic signature

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

Reply via email to