Signatur
Beschreibung
Number.parseInt() wandelt den Anfang eines Strings in eine Ganzzahl um. Die Methode ist identisch mit der globalen Funktion parseInt(). Es gilt Number.parseInt === parseInt. Sie wurde in ES2015 an Number angehängt, damit globale Funktionen in Namensräume wandern und der Code modularer wird.
Das Argument wird zuerst in einen String umgewandelt. Führende Leerzeichen werden entfernt, ein optionales + oder - wird ausgewertet. Danach liest die Methode so viele Zeichen ein, wie zur gewählten Basis passen. Beim ersten ungültigen Zeichen hört sie auf und ignoriert den Rest. Ist schon das erste Zeichen ungültig, kommt NaN zurück.
Typische Einsatzfälle sind Eingaben mit Einheiten wie "42px" oder "100%", Hexadezimal- oder Binärwerte in Strings und das Einlesen von Formular- oder URL-Parametern. Gib den Parameter radix immer ausdrücklich an, damit das Ergebnis eindeutig ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der Wert, der geparst werden soll. Ein Wert, der kein String ist, wird zuerst mit String() umgewandelt. Führende Leerzeichen werden ignoriert. |
|
| $radix | number | 10 (bzw. 16 bei Präfix <code>0x</code>/<code>0X</code>) | Die Basis zwischen 2 und 36. Fehlt der Wert oder ist er 0, gilt die Basis 10. Beginnt der String mit 0x, gilt die Basis 16. Liegt der Wert außerhalb von 2–36, ist das Ergebnis NaN. |
Rückgabewert
Beispiele
Grundlagen und Abbruch beim ersten ungültigen Zeichen
console.log(Number.parseInt('42')); // 42
console.log(Number.parseInt(' -17abc')); // -17
console.log(Number.parseInt('3.99')); // 3 (kein Runden, Abschneiden)
console.log(Number.parseInt('abc')); // NaN
console.log(Number.parseInt === parseInt); // true
CSS-Werte mit Einheit auslesen
const box = document.createElement('div');
box.style.width = '250px';
document.body.append(box);
const width = Number.parseInt(getComputedStyle(box).width, 10);
box.style.width = `${width + 50}px`;
console.log(width, box.style.width);
Andere Zahlensysteme: Hex, Binär, Basis 36
const hexColor = '#ff8800';
const [r, g, b] = [1, 3, 5].map((i) => Number.parseInt(hexColor.slice(i, i + 2), 16));
console.log(r, g, b); // 255 136 0
console.log(Number.parseInt('1011', 2)); // 11
console.log(Number.parseInt('0x1F')); // 31 (Präfix erkannt)
console.log(Number.parseInt('zz', 36)); // 1295
Seitenzahl aus URL-Parameter sicher einlesen
const params = new URLSearchParams('?page=3&size=abc');
const toInt = (value, fallback) => {
const n = Number.parseInt(value ?? '', 10);
return Number.isNaN(n) ? fallback : n;
};
console.log(toInt(params.get('page'), 1)); // 3
console.log(toInt(params.get('size'), 20)); // 20 (Fallback)
// Wichtig · Fallstricke
- Radix immer angeben: Ohne Radix wird ein String mit
0xals Hexadezimalzahl gelesen. Sehr alte Engines vor ES5 lasen führende Nullen wie in"08"sogar als Oktalzahl. - Vorsicht mit
map:['1', '2', '3'].map(Number.parseInt)ergibt[1, NaN, NaN].mapübergibt den Index als zweites Argument, und dieser wird als Radix verwendet. Schreibe stattdessen.map((s) => Number.parseInt(s, 10))oder nutze.map(Number). - Umwandlung in einen String: Zahlen werden vor dem Parsen in Strings umgewandelt.
Number.parseInt(0.0000005)ergibt5, weil der String"5e-7"lautet.Number.parseInt(1e21)ergibt1. Zum Abschneiden von Nachkommastellen eignet sichMath.trunc(). - Nachsichtig beim Parsen:
"12abc"ergibt12. Soll der ganze String gültig sein, nimmNumber()und prüfe mitNumber.isInteger(). - Numerische Trennzeichen wie
"1_000"werden nicht erkannt; das Ergebnis ist1. Die Exponentschreibweise wird ebenfalls nicht ausgewertet. - Bei sehr großen Zahlen oberhalb von
Number.MAX_SAFE_INTEGERgeht Genauigkeit verloren. Verwende dafürBigInt(). - Prüfe auf
NaNmitNumber.isNaN(), nicht mit=== NaN. - Kompatibilität: Die Methode ist in allen modernen Browsern und in Node.js 0.12+ verfügbar, nicht im Internet Explorer. Dort funktioniert die gleichwertige globale Funktion
parseInt().