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
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:
- Initialisierungen von
var
,let
undconst
-Deklarationen - Standardwerte von Destructuring
- Standardparameter
- Initialisierungen von Klassenfeldern
Alle diese Stellen akzeptieren einen Zuweisungsausdruck auf der rechten Seite des =
, sodass Sie, wenn Sie mehrere Gleichheitszeichen zusammen verketten:
const x = y = 5;
Dies ist gleichbedeutend mit:
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:
const x = 5,
y = 5;
Beispiele
Einfache Zuweisung und Verkettung
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.
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:
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.
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.
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