Start · Sprachen · JavaScript · Referenz · Dekrement (--)

Dekrement (--)

Operator

Der Dekrement-Operator (<code>--</code>) subtrahiert <code>1</code> vom Operanden und gibt je nach Position (Postfix/Präfix) den Wert vor oder nach dem Dekrement zurück.

seit JavaScript ES1 Kategorie: syntax

Signatur

x-- / --x

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 von x wird zuerst zurückgegeben, danach wird x um 1 vermindert. Der Ausdruck liefert also den alten Wert.
  • Präfix (--x): Der Wert von x wird zuerst um 1 vermindert, 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

Typ
number | bigint
Beschreibung
  • Postfix (x--): Gibt den Wert von x vor dem Dekrement zurück.
  • Präfix (--x): Gibt den Wert von x nach 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
5 4

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
4 4

Countdown-Schleife mit Postfix-Dekrement

const items = ['Apfel', 'Banane', 'Kirsche'];
let i = items.length;

while (i--) {
  console.log(`Index ${i}: ${items[i]}`);
}
Index 2: Kirsche Index 1: Banane Index 0: Apfel

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
9 -1

Dekrement mit BigInt

let big = 100n;
--big;
console.log(big); // 99n
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.