Tim Tepaße: Typecasting in verschiedenen Kontexten

Beitrag lesen

Hallo Gunnar,

Wieso wird bei a. o1 nicht mit toString in eine Zeichenkette umgewandelt, in b. aber schon? alert("30" + 30) wandelt doch auch 30 in die Zeichenkette "30" mit dem Ergebnis 3030 um.

Das wollte ich noch beantworten. Der Wert 30 wird beim Aufrufen der internen Funktion ToPrimitive direkt ohne Umwandlung als primitive Zahl zurückgegeben, weil er vom Typ number ist. Weil der primitive Wert "30" aber vom Typ string ist springt man in der Auswertung des Additionsausdrucks aber zu Schritt Zwölf ...

12. Call ToString(Result(5)).
  13. Call ToString(Result(6)).

... in dem noch mal explizit alles zu Strings umgewandelt wird.

Tim