Good point. I've never needed falsey valid values in my obj/maps yet, so it'll continue to be very rare that I will need to use `in` (and I'll continue to prefer !obj.x when I don't).
However, for this proposal I would prefer a new keyword like `notin` instead of `!in`, because the `!` followed by a word normally indicates the inverse boolean of a value in other cases, whereas a clean break like `notin` I think seems clearer. Reserved keyword would probably be needed though? On Tue, 10 Jul 2018 at 09:44 Jordan Harband <ljh...@gmail.com> wrote: > `!obj.x` will return true for any falsy property - null, undefined, > positive or negative zero, NaN, and the empty string. `!(x in obj)` will > return true only if `x` is not an own property on `obj` nor anything in its > prototype chain. They are decidedly different tests and they check for > decidedly different things. > > On Mon, Jul 9, 2018 at 9:08 PM, Naveen Chawla <naveen.c...@gmail.com> > wrote: > >> I don't use `in`. >> >> What do I get with `'x' !in obj` or `!(x in obj)` that I don't get with >> !obj['x'] ? >> >> Genuinely asking - I don't know what I am missing. >> >> I use obj[x] because I believe it's a more familiar syntax and I believe >> I get the same outcome..(?).. >> >> On Mon, 9 Jul 2018 at 22:41 Steve Fink <sph...@gmail.com> wrote: >> >>> +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 <guylian...@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.crow...@farsightsoftware.com> a écrit : >>>> >>>>> On Thu, Jun 28, 2018 at 5:14 PM, Tobias Buschor < >>>>> tobias.busc...@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@mozilla.org >>>>> https://mail.mozilla.org/listinfo/es-discuss >>>>> >>>> _______________________________________________ >>>> es-discuss mailing list >>>> es-discuss@mozilla.org >>>> https://mail.mozilla.org/listinfo/es-discuss >>>> >>> >>> >>> _______________________________________________ >>> es-discuss mailing >>> listes-discuss@mozilla.orghttps://mail.mozilla.org/listinfo/es-discuss >>> >>> >>> _______________________________________________ >>> 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 >> >> >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss