Hvordan fungerer dobbel utropstegn (!!) i JavaScript?


Jeg går gjennom Discover Meteor-demoen, og sliter med å finne ut hvordan akkurat 'return !! userId;' fungerer i denne delen:

Posts.allow({
  insert: function(userId, doc) {
    // Only allow posting if you are logged in
    return !! userId;
  }
});

Svar #1

! er den logiske negasjonen eller "ikke"-operatoren. !! er ! to ganger. Det er en måte å kaste en "truthy" eller "falsy" verdi til true eller false, henholdsvis. Gitt en boolean, vil ! negere verdien, dvs. !true gir false og omvendt. Gitt noe annet enn en boolean, vil verdien først bli konvertert til en boolean og deretter negert. For eksempel vil !undefined først konvertere undefined til false og deretter negere det, noe som gir true. Å bruke en andre !-operator (!!undefined) gir false, så i praksis konverterer !!undefined undefined til false.

I JavaScript er verdiene false, null, undefined, 0, -0, NaN og '' (tom streng) "falske" verdier. Alle andre verdier er "sanne".(1):7.1.2 Her er en sannhetstabell for ! og !! brukt på ulike verdier:

verdi!verdi!!verdi
usannsannusann
sannusannsann
nullsannusann
udefinertsannusann
sannusann
-0sannusann
1usannsann
-5usannsann
NaNsannusann
''sannusann
«hei»usannsann

Relaterte artikler