String und Nummer boolean
Der JavaScript -Typ wird gemäß der Zuordnung in den entsprechenden Typ konvertiert.
var str = ""; alert (typeof (str)); // stringstr =; alert (typeof (str)); // numbervar sum = str +; //+Programm zwei Zahlen zum Hinzufügen von Alarm (Summe); //
Dies ist offensichtlicher und der Wert kann auf einen Blick berechnet werden. Bitte beachten Sie die folgende Konvertierung
var sum = "" + ""; alert (typeof (sum)); // StringArt (sum); // var sum = "" +; alert (typeof (sum)); // StringArt (sum); // var sum = + ""; alert (typeof (sum)); // stringAlert (typeof (sum)); // var div = ""/""; alert (typeof (area)); // numberAlert (typeof (sub)); // var sub = "" - ""; alert (typeof (sub)); // numberAlert (sub); // var div = ""/""; alert (typeof (Bereich)); // numberAlert (typeof (div)); // numberAlert (div); //.
Wenn der Numberentyp und der Zeichenfolge Typ "+", wird die Nummer direkt in die Zeichenfolge konvertiert
Das obige "+" ist etwas ganz Besonderes. Wenn es -, *, /; Dann wird es am Ende konvertiert?
var Area = "" * "a"; alert (typeof (area)); // numberAlert (Bereich); // nanvar sub = "a" - ""; alert (typeof (sub)); // nansuB = "a" -; arm (typeof (sub)); // nansub = "a" -; (div)); // nandiv = "a"/; alert (typeof (div)); // nan
Wie oben -, *, / sind die Arithmetik in der Anzahl. Zeichenfolge und Zahl können keine Berechnungen durchführen, daher sind ihre Werte NAN. Typnummer.
var a = true; alert (typeof (a)); // booleanvar b = "true"; var ab = a + b; alert (typeof (ab)); // StringArt (ab); // Truetruealert (a == b); // false
Boolesche und String, Boolesche Typen werden automatisch in Zeichenfolge "True" konvertiert, aber warum ist a nicht gleich B
Schauen wir uns dieses Beispiel an:
var c = ""; alert (typeof (c)); // Stringvar d =; alert (typeof (d)); // numberAlert (c == d); // true
Das Konversionsprinzip wird hier angegeben: (als Referenz)
1. Wenn ein Operand ein Boolescher ist, konvertieren Sie ihn in einen numerischen Wert, bevor Sie Gleichheit vergleicht - falsch mit 0 und treu mit 1;
2. Wenn ein Operand eine Zeichenfolge ist und der andere Bediener ein numerischer Wert ist, wird die Zeichenfolge vor dem Vergleich der Gleichheit in einen numerischen Wert konvertiert.
3. Wenn ein Operand ein Objekt ist und der andere Operand nicht ist, wird die ValueOF () -Methode des Objekts aufgerufen und der erhaltene Grundtypwert nach den vorherigen Regeln verglichen.
Dann wird es beim Vergleich von Strings und Booleschen Typen sein:
Diese Umwandlung erfolgt: Boolean True konvertiert zuerst in Nummer 1, wandelt sich dann in Zeichenfolge "1" um und vergleicht dann. Das Ergebnis muss falsch sein.
NULL- und STRING -Nummer boolean undefiniert
var a = null; alert (typeof (a)); // ObjectVar b = "Hallo"; var ab = a + b; alert (typeof (ab)); // StringArt (ab); // nullhellovar c =; var ac = a * c; alarm (typeof (ac)); // numberAlert (ac); // if (a) // false {} else {alert ("false");} var arm; alert (a == u); //WAHRAus dem angegebenen Beispiel können wir sehen:
Null wird automatisch in die Zeichenfolge "NULL" in der Zeichenfolge konvertiert, die die Nummer 0 darstellt, die in logischem Beurteilung dem falschen entspricht, und das gleiche, wenn der Wert ausgedrückt wird. Beachten Sie, dass == anstelle von ===.
Obwohl == seinen Vergleichstyp beim Vergleich umwandelt, ändert sich sein variabler Typ aufgrund von == nicht.