Zuweisung (=)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Der Zuweisungsoperator (=) wird verwendet, um einem Variablen- oder Objekteigenschaftswert eine Zuweisung zuzuweisen. Der Zuweisungsausdruck selbst hat einen Wert, der dem zugewiesenen Wert entspricht. Dies ermöglicht die Verkettung mehrerer Zuweisungen, um denselben Wert mehreren Variablen zuzuweisen.

Probieren Sie es aus

let x = 2;
const y = 3;

console.log(x);
// Expected output: 2

console.log((x = y + 1)); // 3 + 1
// Expected output: 4

console.log((x = x * y)); // 4 * 3
// Expected output: 12

Syntax

js
x = y

Parameter

x

Ein gültiges Zuweisungsziel, einschließlich eines Identifiers oder eines Property Accessors. Es kann auch ein Destructuring Assignment Pattern sein.

y

Ein Ausdruck, der den Wert angibt, der x zugewiesen werden soll.

Rückgabewert

Der Wert von y.

Ausnahmen

ReferenceError

Wird im Strict-Modus ausgelöst, wenn ein Identifier zugewiesen wird, der im Scope nicht deklariert ist.

TypeError

Wird im Strict-Modus ausgelöst, wenn eine Eigenschaft, die nicht geändert werden kann zugewiesen wird.

Beschreibung

Der Zuweisungsoperator unterscheidet sich vollständig vom Gleichheitszeichen (=), das als syntaktischer Trenner an anderen Stellen verwendet wird, einschließlich:

Alle diese Stellen akzeptieren einen Zuweisungsausdruck auf der rechten Seite des =, sodass bei mehreren verknüpften Gleichheitszeichen folgendes gilt:

js
const x = y = 5;

Dies entspricht:

js
const x = (y = 5);

Was bedeutet, dass y eine vorher existierende Variable sein muss und x eine neu deklarierte const-Variable ist. y wird der Wert 5 zugewiesen, und x wird mit dem Wert des Ausdrucks y = 5 initialisiert, der ebenfalls 5 ist. Falls y keine vorher existierende Variable ist, wird im nicht-strikten Modus eine globale Variable y implizit erstellt, oder im strikten Modus wird ein ReferenceError ausgelöst. Um zwei Variablen innerhalb derselben Deklaration zu deklarieren, verwenden Sie:

js
const x = 5,
  y = 5;

Beispiele

Grundlegende Zuweisung und Verkettung

js
let x = 5;
let y = 10;
let z = 25;

x = y; // x is 10
x = y = z; // x, y and z are all 25

Wert von Zuweisungsausdrücken

Der Zuweisungsausdruck selbst wird wie der Wert auf der rechten Seite ausgewertet, sodass Sie den Wert protokollieren und einer Variablen gleichzeitig zuweisen können.

js
let x;
console.log(x); // undefined
console.log(x = 2); // 2
console.log(x); // 2

Zuweisung an unqualifizierte Identifier

Das globale Objekt steht an der Spitze der Scope-Kette. Beim Versuch, einen Namen einem Wert zuzuordnen, wird die Scope-Kette durchsucht. Dies bedeutet, dass Eigenschaften des globalen Objekts bequem von jedem Scope aus sichtbar sind, ohne dass die Namen mit globalThis., window. oder global. qualifiziert werden müssen.

Da das globale Objekt eine String-Eigenschaft hat (Object.hasOwn(globalThis, "String")), können Sie den folgenden Code verwenden:

js
function foo() {
  String("s"); // The function `String` is globally available
}

Das globale Objekt wird daher schließlich nach unqualifizierten Identifiers durchsucht. Sie müssen nicht globalThis.String eingeben; Sie können einfach den unqualifizierten String eingeben. Um diese Funktion konzeptionell konsistenter zu gestalten, wird bei der Zuweisung an unqualifizierte Identifiers davon ausgegangen, dass Sie möchten, dass eine Eigenschaft mit diesem Namen auf dem globalen Objekt erstellt wird (ohne globalThis.), sofern keine Variable mit demselben Namen in der Scope-Kette deklariert ist.

js
foo = "f"; // In non-strict mode, assumes you want to create a property named `foo` on the global object
Object.hasOwn(globalThis, "foo"); // true

Im strikten Modus führt die Zuweisung an einen unqualifizierten Identifier im Strict-Modus zu einem ReferenceError, um die versehentliche Erstellung von Eigenschaften auf dem globalen Objekt zu vermeiden.

Beachten Sie, dass dies bedeutet, dass JavaScript entgegen der weit verbreiteten Falschinformation keine impliziten oder nicht deklarierten Variablen hat. JavaScript führt stattdessen das globale Objekt mit dem globalen Scope zusammen und erlaubt es, den Qualifizierer des globalen Objekts während der Eigenschaften-Erstellung wegzulassen.

Zuweisung mit Destructuring

Die linke Seite kann auch ein Zuweisungsmuster sein. Dies ermöglicht die Zuweisung von Werten an mehrere Variablen gleichzeitig.

js
const result = /(a+)(b+)(c+)/.exec("aaabcc");
let a = "",
  b = "",
  c = "";
[, a, b, c] = result;
console.log(a, b, c); // "aaa" "b" "cc"

Für weitere Informationen siehe Destructuring assignment.

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-assignment-operators

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Assignment (x = y)

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch