Ich sehe oft Beispiele wie folgt:
Die Codekopie lautet wie folgt:
var a;
var b = !! a;
A ist standardmäßig undefiniert. ! A ist wahr, !! a ist falsch, also ist der Wert von b falsch, nicht mehr undefiniert, noch andere Werte, was hauptsächlich Bequemlichkeit für das nachfolgende Urteil bietet.
!!
Da JavaScript eine schwache Sprache ist (Variablen haben keine festen Datentypen), muss sie manchmal auf den entsprechenden Typ gegossen werden, wie z. B.:
Die Codekopie lautet wie folgt:
A = ParseInt ("1234")
a = ”1234 ″ -0 // zur Zahl konvertieren
B = 1234+”// in String konvertieren
c = einigeObject.toString () // Objekt in die Zeichenfolge konvertieren
Unter ihnen sind die ersten und vierten explizite Konvertierungen und 2 und 3 implizite Conversions
Boolesche Konvertierung, JavaScript -Kongressregeln sind
Falsch, undefiniert, Null, 0, "" ist falsch
stimmt, 1, "Somestring", [Objekt] ist wahr
Für andere konvertierte Werte wie Null und Undefined wird der Operator echte Ergebnisse erzielt, so
Schauen wir uns noch einmal an:
Die Codekopie lautet wie folgt:
var foo;
Alert (! Foo); // In undfiniertem Fall kehrt ein Ausrufezeichen für wahr zurück;
Alert (! Goo); // Im Fall von Null ist auch die Rückgabe eines Ausrufezeichens wahr;
var o = {flag: true};
var test = !! o.flag; // äquivalent zu var test = o.flag || false;
Alarm (Test);
Dieses Beispiel zeigt, dass bei undfinierten und null die Rückgabe eines Ausrufezeichens wahr ist und die Rückgabe von zwei Ausrufezeichen falsch ist, sodass die Funktion der beiden Ausrufezeichen darin besteht NULL/UNIFINED/0/"und" Äquivalente Werte), das Ergebnis wird basierend auf dem tatsächlichen Wert der Variablen zurückgegeben.