Meistens konvertieren Operatoren und Funktionen die ihnen übergebenen Werte automatisch in den richtigen Typ.
alert
wandelt beispielsweise jeden Wert automatisch in eine Zeichenfolge um, um ihn anzuzeigen. Mathematische Operationen wandeln Werte in Zahlen um.
Es gibt auch Fälle, in denen wir einen Wert explizit in den erwarteten Typ konvertieren müssen.
Ich spreche noch nicht von Objekten
In diesem Kapitel gehen wir nicht auf Objekte ein. Im Moment reden wir nur über Grundelemente.
Später, nachdem wir etwas über Objekte gelernt haben, werden wir im Kapitel Konvertierung von Objekten in Grundelemente sehen, wie Objekte hineinpassen.
Die String-Konvertierung erfolgt, wenn wir die String-Form eines Werts benötigen.
Beispielsweise wird alert(value)
der Wert angezeigt.
Wir können auch die Funktion String(value)
aufrufen, um einen Wert in einen String umzuwandeln:
let value = true; Alert(Typ des Werts); // boolean value = String(value); // jetzt ist der Wert ein String „true“ Alert(Typ des Werts); // string
Die String-Konvertierung ist größtenteils offensichtlich. Ein false
wird zu "false"
, null
wird zu "null"
usw.
Die numerische Konvertierung in mathematische Funktionen und Ausdrücke erfolgt automatisch.
Wenn beispielsweise die Division /
auf Nichtzahlen angewendet wird:
alarm( "6" / "2" ); // 3, Strings werden in Zahlen umgewandelt
Wir können die Funktion Number(value)
verwenden, um einen value
explizit in eine Zahl umzuwandeln:
let str = "123"; alarm(typeof str); // string let num = Number(str); // wird zur Zahl 123 alarm(typeof num); // Nummer
Eine explizite Konvertierung ist normalerweise erforderlich, wenn wir einen Wert aus einer stringbasierten Quelle wie einem Textformular lesen, aber die Eingabe einer Zahl erwarten.
Wenn die Zeichenfolge keine gültige Zahl ist, ist das Ergebnis einer solchen Konvertierung NaN
. Zum Beispiel:
let age = Number("eine beliebige Zeichenfolge anstelle einer Zahl"); Alarm(Alter); // NaN, Konvertierung fehlgeschlagen
Numerische Konvertierungsregeln:
Wert | Wird… |
---|---|
undefined | NaN |
null | 0 |
true and false | 1 und 0 |
string | Leerzeichen (einschließlich Leerzeichen, Tabulatoren t , Zeilenumbrüche n usw.) am Anfang und Ende werden entfernt. Wenn die verbleibende Zeichenfolge leer ist, ist das Ergebnis 0 . Andernfalls wird die Zahl aus dem String „gelesen“. Ein Fehler gibt NaN aus. |
Beispiele:
alarm( Number(" 123 ") ); // 123 alarm( Number("123z") ); // NaN (Fehler beim Lesen einer Zahl bei „z“) alarm( Number(true) ); // 1 alarm( Number(false) ); // 0
Bitte beachten Sie, dass sich null
und undefined
hier unterschiedlich verhalten: null
wird zu Null, während undefined
zu NaN
wird.
Auch die meisten mathematischen Operatoren führen eine solche Konvertierung durch, das werden wir im nächsten Kapitel sehen.
Die Boolesche Konvertierung ist die einfachste.
Dies geschieht in logischen Operationen (später werden wir uns mit Bedingungstests und ähnlichen Dingen befassen), kann aber auch explizit mit einem Aufruf von Boolean(value)
ausgeführt werden.
Die Umrechnungsregel:
Werte, die intuitiv „leer“ sind, wie 0
, eine leere Zeichenfolge, null
, undefined
und NaN
, werden zu false
.
Andere Werte werden true
.
Zum Beispiel:
alarm( Boolean(1) ); // WAHR alarm( Boolean(0) ); // FALSCH alarm( Boolean("hello") ); // WAHR alarm( Boolean("") ); // FALSCH
Bitte beachten Sie: Die Zeichenfolge mit der Null "0"
ist true
Einige Sprachen (insbesondere PHP) behandeln "0"
als false
. Aber in JavaScript ist eine nicht leere Zeichenfolge immer true
.
alarm( Boolean("0") ); // WAHR alarm( Boolean(" ") ); // Leerzeichen, auch wahr (jeder nicht leere String ist wahr)
Die drei am häufigsten verwendeten Typkonvertierungen sind String, Zahl und Boolescher Wert.
String Conversion
– Tritt auf, wenn wir etwas ausgeben. Kann mit String(value)
durchgeführt werden. Die Konvertierung in einen String ist bei primitiven Werten normalerweise offensichtlich.
Numeric Conversion
– Tritt bei mathematischen Operationen auf. Kann mit Number(value)
durchgeführt werden.
Die Konvertierung erfolgt nach den Regeln:
Wert | Wird… |
---|---|
undefined | NaN |
null | 0 |
true / false | 1 / 0 |
string | Die Zeichenfolge wird „wie sie ist“ gelesen, Leerzeichen (einschließlich Leerzeichen, Tabulatoren t , Zeilenumbrüche n usw.) auf beiden Seiten werden ignoriert. Eine leere Zeichenfolge wird zu 0 . Ein Fehler gibt NaN aus. |
Boolean Conversion
– Tritt bei logischen Operationen auf. Kann mit Boolean(value)
durchgeführt werden.
Befolgt die Regeln:
Wert | Wird… |
---|---|
0 , null , undefined , NaN , "" | false |
jeder andere Wert | true |
Die meisten dieser Regeln sind leicht zu verstehen und zu merken. Die bemerkenswerten Ausnahmen, bei denen Menschen normalerweise Fehler machen, sind:
undefined
ist NaN
als Zahl, nicht 0
.
"0"
und reine Leerzeichenzeichenfolgen wie " "
sind als boolescher Wert wahr.
Objekte werden hier nicht behandelt. Wir werden später im Kapitel „Objekt-zu-Primitiv-Konvertierung“, das ausschließlich Objekten gewidmet ist, darauf zurückkommen, nachdem wir grundlegendere Dinge über JavaScript gelernt haben.