2015-03-28 8 views
18

Ich gehe durch die Discover Meteor Demo und kämpfe um herauszufinden, wie genau 'zurückkehren !! Benutzeridentifikation;' arbeitet in this section:Wie funktioniert der doppelte Ausruf (!!) in Javascript?

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

Hier ist eine Betrogene Frage, mit einer Tonne Antworten auch: https://stackoverflow.com/questions/784929/what-is-the -nicht-operator-in-javascript – wordsforthewise

Antwort

62

! die logische Negation ist oder "nicht" Operator. !! ist ! zweimal. Es ist eine Möglichkeit, einen "truthy" oder "falsy" -Wert auf true bzw. false zu setzen. Bei einem booleschen Wert negiert ! den Wert, d. H. !true ergibt false und umgekehrt. Wenn etwas anderes als ein boolescher Wert angegeben wird, wird der Wert zuerst in einen booleschen Wert umgewandelt und dann negiert. Zum Beispiel wird !undefined zuerst undefined in false konvertieren und dann negieren, was true ergibt. Die Anwendung eines zweiten !-Operators (!!undefined) ergibt false, so dass !!undefined in false umwandelt.

In JavaScript sind die Werte false, null, undefined, 0, -0, NaN und '' (leere Zeichenkette) sind "falsy" Werte. Alle anderen Werte sind "truthy". (1):7.1.2 Hier ist eine Wahrheitstabelle von ! und !! auf verschiedene Werte:

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 
+0

Danke! das war wirklich hilfreich! – Goehybrid

+0

Dies ist die beste Erklärung, die ich bisher gesehen habe –

+0

Große Antwort! Vielen Dank! – skiabox

Verwandte Themen