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 einer Variablen oder Eigenschaft einen Wert zuzuweisen. Der Zuweisungsausdruck selbst hat einen Wert, der der zugewiesene Wert ist. Dies ermöglicht das Ketten mehrerer Zuweisungen, um einen einzelnen Wert an mehrere Variablen zuzuweisen.

Probieren Sie es aus

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 einem nicht im Scope deklarierten Identifier ein Wert zugewiesen wird.

TypeError

Wird im Strict-Modus ausgelöst, wenn einer Eigenschaft, die nicht modifizierbar ist ein Wert zugewiesen wird.

Beschreibung

Der Zuweisungsoperator ist völlig anders als das Gleichheitszeichen (=), das als syntaktischer Trennzeichen an anderen Stellen verwendet wird, einschließlich:

All diese Stellen akzeptieren einen Zuweisungsausdruck auf der rechten Seite des =, sodass, wenn Sie mehrere Gleichheitszeichen hintereinander verketten:

js
const x = y = 5;

Dies entspricht:

js
const x = (y = 5);

Was bedeutet, dass y eine bereits bestehende Variable sein muss, und x eine neu deklarierte const Variable ist. y wird der Wert 5 zugewiesen, und x wird mit dem Wert des y = 5 Ausdrucks initialisiert, der ebenfalls 5 ist. Wenn y keine bereits bestehende Variable ist, wird eine globale Variable y im Nicht-Strict-Modus implizit erstellt oder ein ReferenceError wird im Strict-Modus 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 zum Wert der rechten Seite ausgewertet, sodass Sie den Wert protokollieren und gleichzeitig einer Variablen zuweisen können.

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

Unqualifizierte Identifier-Zuweisung

Das globale Objekt steht an der Spitze der Scope-Kette. Bei dem Versuch, einen Namen in einen Wert aufzulösen, 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 schließlich nach unqualifizierten Identifikatoren durchsucht. Sie müssen nicht globalThis.String eingeben; Sie können einfach das unqualifizierte String eingeben. Um dieses Feature konzeptionell konsistenter zu gestalten, geht man bei der Zuweisung an unqualifizierte Identifikatoren davon aus, dass Sie eine Eigenschaft mit diesem Namen im globalen Objekt erstellen möchten (ohne globalThis.), wenn im Scope keine gleichnamige Variable 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 Strict-Modus führt die Zuweisung an einen unqualifizierten Identifier im Strict-Modus zu einem ReferenceError, um die versehentliche Erstellung von Eigenschaften im globalen Objekt zu vermeiden.

Beachten Sie, dass die obige Implikation bedeutet, dass JavaScript, entgegen weit verbreiteter Fehlinformationen, keine impliziten oder nicht deklarierten Variablen hat. Es kombiniert einfach das globale Objekt mit dem globalen Scope und ermöglicht es, das Qualifizieren des globalen Objekts bei der Eigenschaftserstellung zu unterlassen.

Zuweisung mit Destrukturierung

Die linke Seite kann auch ein Zuweisungsmuster sein. Dies ermöglicht das Zuweisen 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-Zuweisung.

Spezifikationen

Specification
ECMAScript Language Specification
# sec-assignment-operators

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch