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
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss