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 dem zugewiesenen Wert entspricht. Dies ermöglicht es, mehrere Zuweisungen zu verketten, um einen einzelnen Wert mehreren Variablen zuzuweisen.

Probieren Sie es aus

Syntax

js
x = y

Parameter

x

Ein gültiges Ziel für eine Zuweisung, einschließlich eines Identifiers oder eines Property Accessors. Es kann auch ein Destructuring-Zuweisungsmuster sein.

y

Ein Ausdruck, der den Wert angibt, der x zugewiesen wird.

Rückgabewert

Der Wert von y.

Ausnahmen

ReferenceError

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

TypeError

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

Beschreibung

Der Zuweisungsoperator ist völlig anders als das Gleichheitszeichen (=), das an anderen Stellen als syntaktischer Separator verwendet wird, darunter:

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

js
const x = y = 5;

Dies ist gleichbedeutend mit:

js
const x = (y = 5);

Das bedeutet, y muss eine bereits vorhandene Variable sein, und x ist eine neu deklarierte const-Variable. 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 vorhandene Variable ist, wird im Nicht-Strict-Modus implizit eine globale Variable y 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

Einfache 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

Zuweisung von unqualifizierten Identifikatoren

Das globale Objekt sitzt oben in der Gültigkeitsbereichskette. Wenn versucht wird, einen Namen in einen Wert aufzulösen, wird die Gültigkeitsbereichskette durchsucht. Dies bedeutet, dass Eigenschaften des globalen Objekts bequem aus jedem Gültigkeitsbereich 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 also letztendlich nach unqualifizierten Identifikatoren durchsucht. Sie müssen nicht globalThis.String eingeben; Sie können einfach den unqualifizierten String eingeben. Um diese Funktion konzeptionell konsistenter zu gestalten, wird die Zuweisung zu unqualifizierten Identifikatoren davon ausgehen, dass Sie eine Eigenschaft mit diesem Namen im globalen Objekt erstellen möchten (mit weggelassenem globalThis.), wenn in der Gültigkeitsbereichskette keine Variable mit demselben Namen 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 zu einem unqualifizierten Identifikator 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 im Gegensatz zu populären Fehlinformationen keine impliziten oder nicht deklarierten Variablen hat. Es kombiniert lediglich das globale Objekt mit dem globalen Gültigkeitsbereich und ermöglicht das Weglassen des globalen Objektqualifikators während der Erstellung von Eigenschaften.

Zuweisung mit Destructuring

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