Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

SyntaxError: invalid assignment left-hand side

Die JavaScript-Ausnahme "ungültige Zuweisung auf der linken Seite" tritt auf, wenn irgendwo eine unerwartete Zuweisung erfolgt ist. Sie kann ausgelöst werden, wenn ein einzelnes =-Zeichen anstelle von == oder === verwendet wurde.

Nachricht

SyntaxError: Invalid left-hand side in assignment (V8-based)
SyntaxError: invalid assignment left-hand side (Firefox)
SyntaxError: Left side of assignment is not a reference. (Safari)

ReferenceError: Invalid left-hand side in assignment (V8-based)
ReferenceError: cannot assign to function call (Firefox)
ReferenceError: Left side of assignment is not a reference. (Safari)

Fehlertyp

SyntaxError oder ReferenceError, abhängig von der Syntax.

Was ist schiefgelaufen?

Es gab irgendwo eine unerwartete Zuweisung. Dies könnte beispielsweise auf eine Verwechslung zwischen einem Zuordnungsoperator und einem Gleichheitsoperator zurückzuführen sein. Während ein einzelnes =-Zeichen einen Wert einer Variablen zuweist, vergleichen die ==- oder ===-Operatoren einen Wert.

Beispiele

Typische ungültige Zuweisungen

js
if (Math.PI + 1 = 3 || Math.PI + 1 = 4) {
  console.log("no way!");
}
// SyntaxError: invalid assignment left-hand side

const str = "Hello, "
+= "is it me "
+= "you're looking for?";
// SyntaxError: invalid assignment left-hand side

In der if-Anweisung möchten Sie einen Gleichheitsoperator (===) verwenden, und für die Zeichenfolgenverkettung wird der Plus (+)-Operator benötigt.

js
if (Math.PI + 1 === 3 || Math.PI + 1 === 4) {
  console.log("no way!");
}

const str = "Hello, "
  + "from the "
  + "other side!";

Zuordnungen, die ReferenceErrors erzeugen

Ungültige Zuweisungen führen nicht immer zu Syntaxfehlern. Manchmal ist die Syntax fast korrekt, aber zur Laufzeit wird der Ausdruck auf der linken Seite zu einem Wert statt einer Referenz ausgewertet, sodass die Zuweisung dennoch ungültig ist. Solche Fehler treten später bei der Ausführung auf, wenn die Anweisung tatsächlich ausgeführt wird.

js
function foo() {
  return { a: 1 };
}
foo() = 1; // ReferenceError: invalid assignment left-hand side

Funktionsaufrufe, new-Aufrufe, super() und this sind alle Werte statt Referenzen. Wenn Sie sie auf der linken Seite verwenden möchten, muss das Zuweisungsziel eine Eigenschaft der von ihnen produzierten Werte sein.

js
function foo() {
  return { a: 1 };
}
foo().a = 1;

Hinweis: In Firefox und Safari erzeugt das erste Beispiel einen ReferenceError im Nicht-strikt-Modus und einen SyntaxError im strikten Modus. Chrome wirft einen Laufzeit-ReferenceError für sowohl strikte als auch nicht-strikte Modi.

Verwendung der Optionalen Verkettung als Zuweisungsziel

Optionale Verkettung ist kein gültiges Zuweisungsziel.

js
obj?.foo = 1; // SyntaxError: invalid assignment left-hand side

Stattdessen müssen Sie zunächst den null-ISH-Fall absichern.

js
if (obj) {
  obj.foo = 1;
}

Siehe auch