Signatur
Beschreibung
Number.POSITIVE_INFINITY ist eine statische, schreibgeschützte Dateneigenschaft des Number-Objekts. Ihr Wert ist genau derselbe wie der des globalen Infinity: ein IEEE-754-Gleitkommawert, der größer ist als jede andere Zahl. Sie wird nicht über eine Instanz aufgerufen, sondern immer als Number.POSITIVE_INFINITY.
Der Wert entsteht zum Beispiel bei einem Überlauf (Number.MAX_VALUE * 2) oder bei der Division einer positiven Zahl durch 0. Für die Arithmetik gelten eigene Regeln: Jede positive Zahl mal POSITIVE_INFINITY ergibt POSITIVE_INFINITY, jede negative Zahl mal POSITIVE_INFINITY ergibt NEGATIVE_INFINITY, 0 * POSITIVE_INFINITY und POSITIVE_INFINITY - POSITIVE_INFINITY ergeben NaN. Jede endliche Zahl geteilt durch POSITIVE_INFINITY ergibt 0.
Praktisch nutzt man den Wert vor allem als Startwert bei Minimumsuchen (jeder echte Wert ist kleiner), als „kein Limit“-Wert in Konfigurationen oder um Überläufe zu erkennen. Die ausgeschriebene Form ist in Code oft besser lesbar als Infinity, weil sofort klar ist, dass es um einen Zahlenwert geht.
Beispiele
Grundlegende Eigenschaften
console.log(Number.POSITIVE_INFINITY);
console.log(Number.POSITIVE_INFINITY === Infinity);
console.log(1 / 0 === Number.POSITIVE_INFINITY);
console.log(Number.MAX_VALUE * 2);
console.log(typeof Number.POSITIVE_INFINITY);
Startwert für die Minimumsuche
const preise = [19.99, 4.5, 12, 7.25];
let guenstigster = Number.POSITIVE_INFINITY;
for (const preis of preise) {
if (preis < guenstigster) guenstigster = preis;
}
// Leeres Array liefert weiterhin Infinity -> gezielt prüfen
console.log(guenstigster === Number.POSITIVE_INFINITY ? 'keine Preise' : guenstigster);
Überlauf erkennen und „kein Limit“ abbilden
const berechne = (a, b) => {
const ergebnis = a * b;
if (ergebnis === Number.POSITIVE_INFINITY) {
throw new RangeError('Überlauf: Ergebnis zu groß');
}
return ergebnis;
};
const config = { maxVersuche: Number.POSITIVE_INFINITY };
console.log(5 < config.maxVersuche);
try {
berechne(1e200, 1e200);
} catch (e) {
console.log(e.message);
}
Sonderfälle der Arithmetik
const inf = Number.POSITIVE_INFINITY;
console.log(inf - inf);
console.log(0 * inf);
console.log(-2 * inf);
console.log(42 / inf);
console.log(Number.isFinite(inf));
// Wichtig · Fallstricke
- JSON:
JSON.stringify(Number.POSITIVE_INFINITY)ergibt"null". Unendlich geht beim Serialisieren also still verloren. Für APIs oder Speicherung sollte man den Wert selbst kodieren. - Keine Ganzzahl:
Number.isInteger(Infinity)undNumber.isSafeInteger(Infinity)liefernfalse.BigInt(Infinity)wirft einenRangeError. - Prüfen: Für „endlich?“ lieber
Number.isFinite()verwenden als einen Vergleich mitPOSITIVE_INFINITY, denn dann werden auch-InfinityundNaNerfasst. Das globaleisFinite()wandelt Werte vorher um (isFinite("12")ergibttrue). - Schreibgeschützt: Zuweisungen wie
Number.POSITIVE_INFINITY = 1werden ohne Meldung ignoriert, im Strict Mode lösen sie einenTypeErroraus. Math.min()ohne Argumente liefertInfinity,Math.max()ohne Argumente liefert-Infinity. Das ist ein häufiger Fallstrick beiMath.min(...leeresArray).- Wird von allen Browsern und Node.js unterstützt.