286 Kapitel 7
Umwandlung von Datentypen
Noch mehr Typumwandlungen ...
Die Typumwandlung ist nicht auf Bedingungsanweisungen beschränkt. Es gibt auch noch andere
Operatoren, die ebenfalls gern Datentypen umwandeln, falls sie dazu Gelegenheit bekommen.
Auch wenn die Konversionen Ihnen als Programmierer das Leben leichter machen sollen (was
sicher oft der Fall ist), ist es gut, zu wissen, wann und wo sie vorkommen können. Schau'n wir mal.
var mini = "10" - 5;
Hier wird der String "
10" in die Zahl
10 umgewandelt. Dann wird 80 durch
10 geteilt. Das Ergebnis ist 8.
Auch bei minus wird der String "
1
0" in die Zahl 1
0
konvertiert. Das bedeutet also:
1
0 - 5 = 5.
Noch ein Blick auf Verkettung und Addition
Vermutlich können Sie sich schon denken, warum der +-Operator bei der Verwendung mit Zahlen
als Additionsoperator funktioniert, bei Strings aber als Verkettungsoperator benutzt werden kann. Was
passiert aber, wenn wir die Operanden des +-Operators vermischen? Probieren wir's einfach aus.
Wenn Sie versuchen, eine Zahl und einen String zu addieren, konvertiert JavaScript die Zahl in einen
String und verkettet beide. Also ungefähr das Gegenteil dessen, was beim Test auf Gleichheit passiert:
var addi = 3 + "4";
Beim Versuch, eine Zahl und einen String zu
addieren, werden beide verkettet, nicht addiert.
Hier genauso — wir bekommen "43".
Die Variable addi enthält jetzt den
String "34", nicht die Zahl 7.
var plusi = "4" + 3;
Was ist mit anderen arithmetischen Operatoren?
Andere arithmetische Operatoren (Multiplikation, Division, Subtraktion) behandelt JavaScript
lieber als das, was sie sind, und nicht als String-Operatoren.
Steht der String vorn und Sie benutzen den +-Operator mit einer Zahl, passiert das Gleiche:
Die Zahl wird in einen String konvertiert, und beide werden miteinander verkettet.
var multi = 3 * "4";
Hier konvertiert JavaScript den String
"4" in die Zahl 4 und multipliziert sie
mit 3 (ergibt
12).
var divi = 80 / "10";
Sie sind hier � 287
Typen, Gleichheit, Umwandlung und der ganze Rest
F:
Wird + immer als Verkettungsoperator angesehen, wenn
einer der Operanden ein String ist?
A: Ja. Allerdings besitzt + eine sogenannte Links-nach-rechts-
Assoziativität. In Situationen wie dieser:
var order = 1 + 2 + " Pizzas";
bekommen Sie "3 Pizzas", nicht "12 Pizzas", da bei der Bewegung
von links nach rechts zuerst 1 und 2 (beides Zahlen) addiert werden
(ergibt 3). Danach addieren wir 3 und einen String. Die 3 wird in einen
String umgewandelt und mit " Pizzas" verkettet. Um das gewünschte
Ergebnis zu bekommen, können Sie jederzeit runde Klammern
verwenden, damit bestimmte Operatoren zuerst ausgewertet werden.
Der Ausdruck
var order = (1 + 2) + " Pizzas";
sorgt dafür, dass Sie "3 Pizzas" bekommen, und
var order = 1 + (2 + " Pizzas");
gibt Ihnen "12 Pizzas". Guten Appetit!
F:
Ist das alles, oder gibt es noch weitere Umwandlungen?
A: Die Konvertierung kann auch noch an anderen Stellen statt-
finden. Der unäre Operator - (zur Erzeugung negativer Zahlen) wan-
delt -true beispielsweise in -1 um. Die Verkettung eines Booleschen
Werts mit einem String ergibt dagegen einen String (der Ausdruck
true + " love” ergibt "true love”). Das passiert nicht oft, und in der
Praxis haben wir sie nie gebraucht. Immerhin wissen Sie jetzt, dass
es sie gibt.
F:
Wie bringe ich JavaScript dazu, einen String in eine Zahl zu
konvertieren, um sie mit einer anderen Zahl zu addieren?
A: Dafür gibt es die Funktion Number (ja, mit großgeschriebenem N):
var num = 3 + Number("4");
Hier erhält num den Wert 7. Die Number-Funktion übernimmt ein
Argument und erzeugt nach Möglichkeit eine Zahl daraus. Schlägt die
Umwandlung fehl, ist der Rückgabewert von Number – na, was wohl?
– genau, NaN.
Jetzt ist es Zeit, Ihr Wissen zu den Umwandlungen zu testen. Schreiben Sie das Ergebnis für
die Ausdrücke unten in die danebenstehende Leerzeile. Eine Lösung haben wir für Sie schon
ausgefüllt. Überprüfen Sie Ihre Antworten am Ende dieses Kapitels, bevor Sie weiterlesen.
Infinity - "1"
"42" + 42
2 + "1 1"
99 + 101
"1" - "1"
console.log("Ergebnis: " + 10/2)
3 + " Bananen " + 2 + " Äpfel"
“4242”
Es gibt keine
Dummen Fragen
Spitzen Sie Ihren Bleistift
Get JavaScript-Programmierung von Kopf bis Fuß now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.