Start · Sprachen · JavaScript · Referenz · Zuweisungsoperator (=)

Zuweisungsoperator (=)

Operator

Der Zuweisungsoperator <code>=</code> weist einer Variablen, Eigenschaft oder einem Destrukturierungs-Ziel einen Wert zu.

seit JavaScript ES1 Kategorie: syntax

Signatur

x = value

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

Typ
any
Beschreibung
Gibt den zugewiesenen Wert zurück. Dadurch sind verkettete Zuweisungen wie 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
Alice 30 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
42 42 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]
{ name: 'Bob', age: 25 } [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
10 20 1920 1080 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
[7, 9] 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 einen TypeError.
  • 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 ein ReferenceError geworfen.
  • Das Zuweisungsziel wird nach der ECMAScript-Spezifikation als Reference Record ausgewertet – daher sind ungültige L-Werte wie 5 = x oder 'str' = y ein SyntaxError.
  • Verwandt, aber nicht dasselbe: Die kombinierten Zuweisungsoperatoren (+=, -=, ??=, ||=, &&= usw.) verbinden eine Operation mit der Zuweisung in einem Schritt.