Signatur
Beschreibung
Der Zuweisungsoperator (=) ist der grundlegendste Operator in JavaScript. Er wertet den Ausdruck auf der rechten Seite aus und speichert den Wert in dem Bezeichner (Variable, Objekteigenschaft, Array-Element) auf der linken Seite. Die linke Seite wird als L-Wert (engl. lvalue) bezeichnet und muss ein gültiges Zuweisungsziel sein.
Der Operator ist rechtsassoziativ – das bedeutet, mehrere Zuweisungen in einem Ausdruck werden von rechts nach links ausgewertet: a = b = 5 weist zuerst b = 5 zu und dann a = 5. Außerdem gibt = selbst den zugewiesenen Wert zurück, sodass eine Zuweisung als Teil eines größeren Ausdrucks verwendet werden kann.
Zuweisungen funktionieren mit allen deklarierten Bezeichnern (var, let, const), mit Objekteigenschaften (obj.prop = …), Array-Elementen (arr[0] = …) sowie mit Destrukturierungsmustern auf der linken Seite ([a, b] = [1, 2] oder { x } = obj). Bei const ist nach der initialen Zuweisung keine erneute Zuweisung erlaubt.
Zu unterscheiden ist = stets vom Gleichheitsoperator == bzw. dem strikten Gleichheitsoperator ===: Ersterer weist zu, Letztere vergleichen. Die versehentliche Verwendung von = anstelle von === in Bedingungen ist ein häufiger Fehler und kann zu unerwartetem Verhalten führen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $x Pflicht | any | — | Das Zuweisungsziel (L-Wert): eine Variable (let x), eine Objekteigenschaft (obj.prop), ein Array-Element (arr[0]) oder ein Destrukturierungsmuster ([a, b] / { key }). |
| $value Pflicht | any | — | Der zuzuweisende Ausdruck oder Wert. Dieser wird vollständig ausgewertet, bevor die Zuweisung stattfindet. |
Rückgabewert
a = b = 5 oder die Verwendung einer Zuweisung als Teilausdruck möglich.Beispiele
Einfache Variablenzuweisung
let name = 'Alice';
let age = 30;
console.log(name); // 'Alice'
console.log(age); // 30
// Wert ersetzen
age = 31;
console.log(age); // 31
Verkettete Zuweisung (Rechtsassoziativität)
let a, b, c;
a = b = c = 42;
console.log(a); // 42
console.log(b); // 42
console.log(c); // 42
Objekteigenschaft und Array-Element zuweisen
const person = {};
person.name = 'Bob';
person.age = 25;
const scores = [0, 0, 0];
scores[1] = 99;
console.log(person); // { name: 'Bob', age: 25 }
console.log(scores); // [0, 99, 0]
Destrukturierungs-Zuweisung
// Array-Destrukturierung
let x, y;
[x, y] = [10, 20];
console.log(x, y); // 10 20
// Objekt-Destrukturierung
const { width, height } = { width: 1920, height: 1080 };
console.log(width, height); // 1920 1080
// Tauschen ohne Hilfsvariable
let p = 1, q = 2;
[p, q] = [q, p];
console.log(p, q); // 2 1
Rückgabewert der Zuweisung nutzen
// Der Zuweisungsoperator gibt den zugewiesenen Wert zurück.
// Nützlich z. B. beim Lesen und gleichzeitigen Zwischenspeichern.
const data = [3, 7, 2, 9, 1];
let max;
const filtered = data.filter(n => (max = Math.max(max ?? -Infinity, n)) > 5);
console.log(filtered); // [7, 9]
console.log(max); // 9
// Wichtig · Fallstricke
Häufiger Fehler – Zuweisung statt Vergleich: In einer if-Bedingung weist if (x = 5) den Wert 5 zu und wertet dann 5 als truthy aus – ein typischer Bug. Gemeint ist fast immer if (x === 5). Viele Linter (ESLint-Regel no-cond-assign) warnen davor.
const-Variablen können nach der initialen Deklarationszuweisung nicht erneut zugewiesen werden; ein erneuter Versuch wirft einenTypeError.- Globale implizite Variablen: Wird im nicht-strikten Modus (sloppy mode) einer nicht deklarierten Bezeichnung zugewiesen (
undeclaredVar = 1), legt JavaScript stillschweigend eine globale Variable an. Im Strict Mode ('use strict') wird stattdessen einReferenceErrorgeworfen. - Das Zuweisungsziel wird nach der ECMAScript-Spezifikation als Reference Record ausgewertet – daher sind ungültige L-Werte wie
5 = xoder'str' = yeinSyntaxError. - Verwandt, aber nicht dasselbe: Die kombinierten Zuweisungsoperatoren (
+=,-=,??=,||=,&&=usw.) verbinden eine Operation mit der Zuweisung in einem Schritt.