Small Proposal "!in"

Steve Fink sphink at gmail.com
Mon Jul 9 17:11:18 UTC 2018


+1 from me for !in. It's a surprisingly common nuisance.

And I don't care for the !obj.x workaround at all -- even if you can 
survive the difference in semantics, from a code reading point of view 
this is saying something entirely different.

And it is very different semantically. 'x' in obj does [[HasProperty]]; 
obj.x does [[GetProperty]]. With

   obj = { get x() { print("getter"); return 3; } };

then |"x" in obj| does not print "getter" while |obj.x| does.

On 06/29/2018 12:26 AM, Cyril Auburtin wrote:
>
> ```js
> if (!obj.x && !obj.y) {
>      doit()
> }
> ```
> The cases where they are equal to 0, '', null, undefined shouldn't 
> matter imo, if for example those x and y are numbers, they would be 
> defined, defaulted to 0, and you would test for `!== 0` rather if needed
>
> Le jeu. 28 juin 2018 à 18:31, Guylian Cox <guyliancox at gmail.com 
> <mailto:guyliancox at gmail.com>> a écrit :
>
>     I agree, it's very annoying to have to write it !(x in y). I've
>     been wanting this operator for a very, very long time.
>
>     If there is interest for !in, I think !instanceof deserves to be
>     included too.
>
>     Le jeu. 28 juin 2018 à 18:19, T.J. Crowder
>     <tj.crowder at farsightsoftware.com
>     <mailto:tj.crowder at farsightsoftware.com>> a écrit :
>
>         On Thu, Jun 28, 2018 at 5:14 PM, Tobias Buschor
>         <tobias.buschor at shwups.ch <mailto:tobias.buschor at shwups.ch>>
>         wrote:
>         > I dont like to write:
>         > if ( !('x' in obj) &&  !('y' in obj) ) {
>         >      doit()
>         > }
>         >
>         > I was even tempted to write it that way:
>         > if ('x' in obj  ||  'y' in obj) { } else {
>         >      doit()
>         > }
>
>         There's
>
>         ```js
>         if (!('x' in obj  ||  'y' in obj)) {
>              doit()
>         }
>         ```
>
>         That said, I've wanted !in many a time, in a minor sort of way...
>
>         -- T.J. Crowder
>         _______________________________________________
>         es-discuss mailing list
>         es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
>         https://mail.mozilla.org/listinfo/es-discuss
>
>     _______________________________________________
>     es-discuss mailing list
>     es-discuss at mozilla.org <mailto: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/20180709/f280a72b/attachment.html>


More information about the es-discuss mailing list