Start · Sprachen · JavaScript · Referenz · Number.parseInt()

Number.parseInt()

Methode

Die statische Methode <code>Number.parseInt()</code> parst einen String und gibt eine Ganzzahl zur angegebenen Basis (Radix) zurück – oder <code>NaN</code>.

seit JavaScript ES2015 Kategorie: method-property

Signatur

Number.parseInt(string, radix)

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

Typ
number
Beschreibung
Eine aus dem gegebenen string geparste Ganzzahl. Wenn radix kleiner als 2 oder größer als 36 ist oder das erste Nicht-Whitespace-Zeichen nicht in eine Zahl konvertiert werden kann, wird NaN zurückgegeben.

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
42 -17 3 NaN 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);
250 300px

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
255 136 0 11 31 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)
3 20

// Wichtig · Fallstricke

  • Radix immer angeben: Ohne Radix wird ein String mit 0x als 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) ergibt 5, weil der String "5e-7" lautet. Number.parseInt(1e21) ergibt 1. Zum Abschneiden von Nachkommastellen eignet sich Math.trunc().
  • Nachsichtig beim Parsen: "12abc" ergibt 12. Soll der ganze String gültig sein, nimm Number() und prüfe mit Number.isInteger().
  • Numerische Trennzeichen wie "1_000" werden nicht erkannt; das Ergebnis ist 1. Die Exponentschreibweise wird ebenfalls nicht ausgewertet.
  • Bei sehr großen Zahlen oberhalb von Number.MAX_SAFE_INTEGER geht Genauigkeit verloren. Verwende dafür BigInt().
  • Prüfe auf NaN mit Number.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().