Bei der Ausführung +, -, *, /, ==,! = Usw. In JavaScript sind JavaScript die Werte auf beiden Seiten des Bedieners in den erwarteten Typ, bevor die Werte auf beiden Seiten des Operators in den erwarteten Typ in den erwarteten Typ in nicht einverstanden sind. Wenn der erwartete Werttyp String ist, wandelt JavaScript den Wert in die Zeichenfolge um. Wenn der erwartete Werttyp eine Zahl ist, konvertiert JavaScript den Wert in die Zahl (wenn er nicht in einen numerischen Wert konvertiert werden kann, gibt er die NAN zurück). Zum Beispiel:
Die Codekopie lautet wie folgt:
Konsole.log (10 + "Katzen"); // 10 Katzen
console.log (10 * "Katzen"); // nan, "Katzen" werden in NAN umgewandelt
console.log (10 + "2"); // 102
console.log (10 - "2"); // 8
console.log (10/"2"); // 5
console.log (10 * "2"); // 20
console.log (10 * "2"); // 20
console.log ("10" * "2"); // 20
Werttyp -Konvertierungsregeln
Informationen zu den Wertkonvertierungsregeln in JavaScript finden Sie in Tabelle 3-2. JavaScript -Konvertierungen im Buch "JavaScript the Definitive Guide". Einige der bemerkenswertesten Orte sind:
1. Das Ergebnis ist NAN nach undefinierter Konvertierung zur Anzahl.
2. Das Ergebnis ist 0, nachdem Null in die Zahl konvertiert wurde.
3. Das Ergebnis ist 0, nachdem die leere Zeichenfolge "" in die Nummer konvertiert wurde.
4. Das Ergebnis ist "0" nach Konvertieren von 0 in String.
5. Das Ergebnis ist 0, nachdem das leere Array [] in Nummer umgewandelt wurde.
6. Das Array mit nur einem Zahlenelement (z. B. [9]) wird in die Zahl konvertiert und das Ergebnis ist der Zahlenwert (9).
Wenn JavaScript die Zeichenfolge in die Anzahl konvertiert, gibt es zwei weitere interessante Regeln:
1. JavaScript löscht die Whitespace -Zeichen am Anfang und am Ende der Zeichenfolge, bevor Sie sie konvertieren, sodass Strings wie "42" erfolgreich in die Nummer 42 konvertiert werden können.
2. Nachdem die Whitespace-Zeichen am Anfang und am Ende gelöscht wurden, wird die String in NAN konvertiert, wenn die Zeichenfolge immer noch nicht numerische Zeichen enthält. Zum Beispiel: "3 m" wird in Nan umgewandelt.
Beispiel:
Die Codekopie lautet wie folgt:
console.log (10 * "3"); // 30
console.log (10 * "3 m"); // nan, "3 m" wird in NAN umgewandelt
Wertentyp Conversion und Vergleich
In JavaScript beinhaltet die Verwendung des gleichen Operators (==) die Umwandlung von Werttypen: Wenn die Werttypen auf beiden Seiten des == Operators inkonsistent sind, wandelt JS sie vor Urteilen in konsistente Typen um. Achten Sie darauf, dass zwei verschiedene Werte Arten von Werten nach der Typumwandlung äquivalent sein können. Dies bedeutet jedoch nicht, dass das Ergebnis der Verwendung des == Operators für sie wahr sein muss. Ein einfaches Beispiel ist undefiniert und falsch: Das Ergebnis von undefiniertem Undefiniertes Undefinierter in den Booleschen Typ ist genau falsch, aber tatsächlich ist das Ergebnis von undefiniert == Falsch ist falsch.
Explizite Typumwandlung
Die automatische Konvertierung mit JavaScript ist sehr bequem, kann jedoch leicht zu Problemen wie Code -Wartbarkeit führen. Um den Programmcode klarer und weniger Mehrdeutigkeit zu machen, werden explizite Typkonvertierungen manchmal in JS -Programmen verwendet:
Die Codekopie lautet wie folgt:
Nummer ("3") // 3
String (falsch) // "Falsch"
Boolean ([]) // true
In den meisten Fällen stimmt das Ergebnis einer expliziten Typumwandlung mit dem Ergebnis der automatischen JS -Konvertierung überein. Es gibt jedoch einen Sonderfall: Wenn Null oder undefiniert automatisch in Objekt konvertiert wird, wirft JS einen TypenErrorfehler. Wenn Null oder undefiniert ausdrücklich in Objekt konvertiert wird, gibt JS ein leeres Objekt zurück:
Die Codekopie lautet wie folgt:
console.log (Objekt (undefiniert)); // leeres Objekt
console.log (Objekt (null)); // leeres Objekt
Gleichzeitig unterscheidet sich auch die erhaltenen Ergebnisse, wenn sich der durch die explizite Konvertierung angegebene Typ von dem durch die automatischen Konvertierung von JS angegebenen Typ unterscheidet. Zum Beispiel ist das Ergebnis von undefined == Falsch erwähnt falsch; Wenn der Konvertierungstyp explizit als boolescher spezifiziert ist, ist das Ergebnis wahr:
Die Codekopie lautet wie folgt:
console.log (undefined == false); // false
console.log (boolean (undefiniert) == boolean (falsch)); // true
Verwendung der automatischen Typumwandlung
In JS kann die automatische Umwandlung von Werttypen verwendet werden, um den gleichen Effekt wie explizite Konvertierung durch Operatoren zu erzielen, wie z. B.:
Die Codekopie lautet wie folgt:
console.log (false + ""); // "false"
console.log (+false); // 0
console.log (!! 3); // true