Signatur
Beschreibung
Number.NEGATIVE_INFINITY ist eine statische, schreibgeschützte Dateneigenschaft des Number-Konstruktors. Ihr Wert ist identisch mit -Infinity, also dem kleinsten Wert, den der Typ number (IEEE-754-Gleitkommazahl mit doppelter Genauigkeit) darstellen kann. Er ist kleiner als jede andere Zahl, auch als -Number.MAX_VALUE.
Negative Unendlichkeit entsteht zum Beispiel, wenn eine negative Zahl durch 0 geteilt wird (-1 / 0) oder wenn ein Rechenergebnis kleiner als -Number.MAX_VALUE wird (Überlauf, z. B. -Number.MAX_VALUE * 2).
In der Praxis ist die Eigenschaft vor allem als Startwert bei der Maximumsuche nützlich: Jeder echte Zahlenwert ist größer, deshalb wird er beim ersten Vergleich übernommen. Auch als Sentinel-Wert für „keine untere Grenze“ oder um Überläufe zu erkennen, ist sie gebräuchlich. Weil es sich um eine statische Eigenschaft handelt, wird sie immer als Number.NEGATIVE_INFINITY angesprochen und nie über eine Zahleninstanz.
Rückgabewert
-Infinity. Die Eigenschaft ist nicht beschreibbar (writable: false), nicht aufzählbar (enumerable: false) und nicht konfigurierbar (configurable: false).Beispiele
Grundlegende Werte und Vergleiche
console.log(Number.NEGATIVE_INFINITY);
console.log(Number.NEGATIVE_INFINITY === -Infinity);
console.log(-1 / 0 === Number.NEGATIVE_INFINITY);
console.log(-Number.MAX_VALUE * 2);
console.log(Number.NEGATIVE_INFINITY < -Number.MAX_VALUE);
Startwert für die Maximumsuche
const messwerte = [-12.5, -3.2, -40, -7.9];
const maximum = messwerte.reduce(
(max, wert) => (wert > max ? wert : max),
Number.NEGATIVE_INFINITY
);
console.log(maximum);
// Leeres Array liefert den Startwert zurück
const leer = [].reduce((max, w) => Math.max(max, w), Number.NEGATIVE_INFINITY);
console.log(leer);
Überlauf erkennen und abfangen
const sicheresProdukt = (a, b) => {
const ergebnis = a * b;
if (ergebnis === Number.NEGATIVE_INFINITY) {
throw new RangeError('Negativer Überlauf bei der Multiplikation');
}
return ergebnis;
};
console.log(sicheresProdukt(-2, 21));
try {
sicheresProdukt(-1e308, 10);
} catch (fehler) {
console.log(fehler.message);
}
Rechenregeln mit negativer Unendlichkeit
const ninf = Number.NEGATIVE_INFINITY;
console.log(ninf + 1000); // bleibt -Infinity
console.log(ninf * -1); // Infinity
console.log(ninf * 0); // NaN
console.log(ninf + Infinity); // NaN
console.log(1 / ninf); // -0
console.log(Object.is(1 / ninf, -0));
console.log(Number.isFinite(ninf));
// Wichtig · Fallstricke
- Kein Parameter, keine Methode:
Number.NEGATIVE_INFINITYist eine Konstante. Ein Aufruf wieNumber.NEGATIVE_INFINITY()wirft einenTypeError. Über eine Instanz ((5).NEGATIVE_INFINITY) bekommt manundefined. - Schreibgeschützt: Zuweisungen werden im nicht-strikten Modus stillschweigend ignoriert und werfen im strikten Modus einen
TypeError. - NaN-Fallen:
-Infinity * 0,-Infinity + Infinityund-Infinity / -InfinityergebenNaN. Teilt man eine endliche Zahl durch-Infinity, entsteht-0. Das lässt sich nur mitObject.is()zuverlässig von+0unterscheiden. - JSON:
JSON.stringify(-Infinity)liefert"null". Unendliche Werte bleiben bei der Serialisierung also nicht erhalten. - Prüfen:
Number.isFinite(x)meldet sowohl±Infinityals auchNaNals nicht endlich. Wer gezielt auf negative Unendlichkeit testen will, vergleicht mitx === Number.NEGATIVE_INFINITY. Math.max()ohne Argumente gibt-Infinityzurück. Das passiert auch beiMath.max(...[])mit einem leeren Array und ist eine häufige Fehlerquelle.- BigInt:
BigIntkennt keine Unendlichkeit.BigInt(-Infinity)wirft einenRangeError. - Kompatibilität: Die Eigenschaft wird seit ECMAScript 1 von allen Browsern und von Node.js unterstützt.