Direkt zum Hauptinhalt springen
eLearner.app
Modul 2 · Lektion 4 von 48/32 im Kurs~8 min
Lektionen des Moduls (4/4)

Typkonvertierungen

Du musst ständig den Typ eines Wertes umwandeln: Der value eines HTML-Inputs wird als String geliefert, selbst wenn er eine Zahl darstellt, eine API gibt dir Strings zurück, die du formatieren musst, oder du musst ein Objekt als Text protokollieren. JS bietet drei Familien von Umwandlungen: explizite, dedizierte Parser und (zu vermeiden) implizite.

Explizite Umwandlungen

Sie sind die klarsten und sollten dein Standard sein:

JS
Number('42'); // 42
Number('3.14'); // 3.14
Number(''); // 0     ← attenzione
Number('  10 '); // 10     (spazi vengono ignorati)
Number('ciao'); // NaN    ← non rappresenta un numero

String(42); // '42'
String(true); // 'true'
String(null); // 'null'
String(undefined); // 'undefined'

Boolean(1); // true
Boolean(0); // false
Boolean(''); // false
Boolean('abc'); // true

parseInt und parseFloat: tolerante Parser

Im Gegensatz zu Number(...) ignorieren parseInt und parseFloat das nicht-numerische Ende des Strings: Sie stoppen beim ersten ungültigen Zeichen.

JS
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt('   12 anni'); // 12
parseInt('ciao12'); // NaN  ← deve iniziare con cifre

toFixed zur Formatierung von Zahlen als Strings

Kurz in der vorherigen Lektion gesehen: rundet auf N Dezimalstellen und gibt einen String zurück.

JS
(3.14159).toFixed(2); // '3.14'
(1).toFixed(2); // '1.00'

Um ihn wieder in eine number umzuwandeln, verwende das Präfix Number(...) oder das unäre +:

JS
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14

NaN: der Wert, der dich beißt

NaN ("Not a Number") entsteht bei fehlerhaften numerischen Operationen:

JS
Number('ciao'); // NaN
0 / 0; // NaN
parseInt('xxx'); // NaN

Eigenschaften:

  • Es ist vom Typ 'number' (ja, eine "Nicht-Zahl" ist eine Zahl)
  • Es ist nicht gleich sich selbst: NaN === NaN ist false
  • Verwende zum Testen die Funktion Number.isNaN(x)
JS
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // true

Probier es aus

Übung#js.m2.l4.e1
Versuche: 0Wird geladen…

Extrahiere aus dem String '128.95 EUR' die Zahl (Dezimalzahl) und runde sie auf die erste Dezimalstelle, wobei das Ergebnis als number zurückgegeben werden soll. Erwartet: 129.

Editor wird geladen…
Hinweis anzeigen

parseFloat ignoriert 'EUR'; .toFixed(0) rundet auf die ganze Zahl als String; Number(...) wandelt wieder in number um.

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

Übung#js.m2.l4.e2
Versuche: 0Wird geladen…

Schreibe für gegebenes `n = Number('non un numero')` einen einzigen Ausdruck, der true ergibt, wenn das Ergebnis NaN ist.

Editor wird geladen…
Hinweis anzeigen

Verwende Number.isNaN, nicht n === NaN: NaN ist nicht gleich sich selbst.

Lösung nach 3 Versuchen verfügbar