Signatur
Beschreibung
Der Dekrement-Operator -- vermindert den Wert einer numerischen Variable um 1. Er existiert in zwei Varianten: als Postfix-Operator (x--) und als Präfix-Operator (--x). Beide verändern den Wert der Variablen um -1, unterscheiden sich jedoch im zurückgegebenen Wert des Ausdrucks.
- Postfix (
x--): Der aktuelle Wert vonxwird zuerst zurückgegeben, danach wirdxum1vermindert. Der Ausdruck liefert also den alten Wert. - Präfix (
--x): Der Wert vonxwird zuerst um1vermindert, dann wird der neue Wert zurückgegeben.
Intern führt JavaScript eine Typumwandlung durch: Ist der Operand kein Number, wird er zunächst mit Number() konvertiert. Für BigInt-Werte funktioniert der Operator ebenfalls, allerdings dürfen Number und BigInt dabei nicht gemischt werden. Der Dekrement-Operator wird typischerweise in Schleifen, Countdown-Logiken oder überall dort eingesetzt, wo ein Zähler schrittweise verringert werden soll.
Wichtig: Der Operand muss eine gültige Zuweisung (L-Value) sein — also eine Variable, eine Objekteigenschaft oder ein Array-Element. Auf Literale wie 42-- oder Konstanten (const) angewendet, wirft JavaScript einen ReferenceError bzw. TypeError.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $x Pflicht | number | bigint | Der Operand, dessen Wert um 1 verringert wird. Muss eine zuweisbare Variable, Objekteigenschaft oder ein Array-Element sein. Nicht-numerische Werte werden automatisch via Number() konvertiert. |
Rückgabewert
- Postfix (
x--): Gibt den Wert vonxvor dem Dekrement zurück. - Präfix (
--x): Gibt den Wert vonxnach dem Dekrement zurück.
Beispiele
Postfix-Dekrement: alter Wert wird zurückgegeben
let a = 5;
const returned = a--;
console.log(returned); // 5 — der Wert vor dem Dekrement
console.log(a); // 4 — der neue Wert der Variable
Präfix-Dekrement: neuer Wert wird zurückgegeben
let b = 5;
const returned = --b;
console.log(returned); // 4 — der Wert nach dem Dekrement
console.log(b); // 4 — die Variable hat denselben Wert
Countdown-Schleife mit Postfix-Dekrement
const items = ['Apfel', 'Banane', 'Kirsche'];
let i = items.length;
while (i--) {
console.log(`Index ${i}: ${items[i]}`);
}
Automatische Typumwandlung
let s = '10'; // String
s--;
console.log(s); // 9 — Number, kein String mehr
let n = null;
n--;
console.log(n); // -1 — null wird zu 0 konvertiert, dann -1
Dekrement mit BigInt
let big = 100n;
--big;
console.log(big); // 99n
// Wichtig · Fallstricke
Vorsicht mit const: Da const-Variablen nicht neu zugewiesen werden dürfen, führt const x = 5; x--; zu einem TypeError. Für veränderbare Zähler immer let verwenden.
NaN-Falle: Wenn der Operand nicht sinnvoll in eine Zahl umgewandelt werden kann (z. B. let s = 'abc'; s--;), wird der Wert NaN. Nachfolgende Dekremente liefern weiterhin NaN.
Präfix vs. Postfix in Ausdrücken: In zusammengesetzten Ausdrücken wie let y = x-- + 1; kann die Wahl zwischen Präfix und Postfix zu schwer lesbarem und fehleranfälligem Code führen. Zur besseren Lesbarkeit empfiehlt sich in solchen Fällen die explizite Schreibweise x = x - 1.
Kein Operator auf Literalen: 5-- oder --5 führt zu einem ReferenceError, da Literale keine zuweisbaren L-Values sind.
Browser-Kompatibilität: Der Dekrement-Operator ist seit ES1 Bestandteil von JavaScript und wird von allen Browsern und JavaScript-Laufzeitumgebungen vollständig unterstützt.