Wir sehen oft Beispiele wie dieses:
var a;
var b=!!a;
a ist standardmäßig undefiniert. !a ist wahr, !!a ist falsch, daher ist der Wert von b falsch, nicht undefiniert oder andere Werte, hauptsächlich um spätere Urteile zu erleichtern.
!! Wird im Allgemeinen verwendet, um den folgenden Ausdruck auf boolesche Daten (boolean) zu zwingen, d. h. er kann nur wahr oder falsch sein;
Da JavaScript eine schwach typisierte Sprache ist (Variablen sind keine festen Daten). Daher ist es manchmal erforderlich, ihn in den entsprechenden Typ umzuwandeln, ähnlich wie:
a=parseInt(“1234″)
a=”1234″-0 //In Zahl konvertieren
b=1234 ”” //In String konvertieren
c= someObject. toString() // Konvertieren Sie das Objekt in einen String
Der erste und vierte Typ sind explizite Konvertierungen und der zweite und dritte Typ sind implizite Konvertierungen
Boolesche Konvertierung JavaScript-Konventionsregeln sind
falsch, undefiniert, null, 0, „“ ist falsch
wahr, 1, „somestring“, [Objekt] ist wahr
für null und undefiniert usw . Für andere implizit konvertierte Werte führt die Verwendung des !-Operators zu einem echten Ergebnis. Der Zweck der Verwendung von zwei Ausrufezeichen besteht also darin, diese Werte in „äquivalente“ boolesche Werte umzuwandeln.
var foo
alert(!foo) ;// Im undefinierten Fall gibt ein Ausrufezeichen true zurück; // Im Nullfall gibt ein Ausrufezeichen auch true zurück 🎜>var test =!!o.flag;//Äquivalent zu var test=o.flag||false;
alert(test);
Dieses Beispiel zeigt, wenn undiffed und null , Die Verwendung eines Ausrufezeichens gibt true zurück, die Verwendung von zwei Ausrufezeichen gibt false zurück. Die Rolle von zwei Ausrufezeichen besteht also darin, dass, wenn der Wert der Variablen explizit festgelegt wird (nicht null/undified/0/"" und andere Werte), die Ergebnis Es wird basierend auf dem tatsächlichen Wert der Variablen zurückgegeben. Wenn es nicht festgelegt ist, ist das Ergebnis falsch.