Ik ben bezig met de Discover Meteor-demo en heb moeite om erachter te komen hoe ‘return !! gebruikersnaam;’ werkt in deze sectie:
Posts.allow({
insert: function(userId, doc) {
// only allow posting if you are logged in
return !! userId;
}
});
Antwoord 1, autoriteit 100%
!
is de logische ontkenning of “niet”-operator. !!
is !
twee keer. Het is een manier om een ”truthy” of “falsy” waarde te casten naar respectievelijk true
of false
. Gegeven een boolean, zal !
de waarde teniet doen, d.w.z. !true
levert false
op en vice versa. Gegeven iets anders dan een boolean, wordt de waarde eerst geconverteerd naar een boolean en vervolgens genegeerd. Bijvoorbeeld, !undefined
converteert eerst undefined
naar false
en negeert het, wat true
oplevert. Het toepassen van een tweede !
operator (!!undefined
) levert false
op, dus in feite converteert !!undefined
undefined
naar false
.
In JavaScript zijn de waarden false
, null
, undefined
, 0
, -0
, NaN
en ''
(lege tekenreeks) zijn “valse” waarden. Alle andere waarden zijn “truthy”.(1 ):7.1.2Hier is een waarheidstabel van !
en !!
toegepast op verschillende waarden:
value │ !value │ !!value
━━━━━━━━━━━┿━━━━━━━━━━┿━━━━━━━━━━━
false │ ✔ true │ false
true │ false │ ✔ true
null │ ✔ true │ false
undefined │ ✔ true │ false
0 │ ✔ true │ false
-0 │ ✔ true │ false
1 │ false │ ✔ true
-5 │ false │ ✔ true
NaN │ ✔ true │ false
'' │ ✔ true │ false
'hello' │ false │ ✔ true