ReferenceError: assignment to undeclared variable "x"

Fehlermeldung

ReferenceError: assignment to undeclared variable "x" (Firefox)
ReferenceError: "x" is not defined (Chrome)
ReferenceError: Variable undefined in strict mode (Edge)

Fehlertyp

ReferenceError Warnung nur im Strict mode.

Was ist falsch gelaufen?

Ein Wert wurde zu einer nicht deklarierten Variablen hinzugefĂŒgt. Oder mit anderen Worten, es gibt eine Zuweisung ohne das SchlĂŒsselwort var. Es gibt einige Unterschiede zwischen deklarierten und nicht deklarierten Variablen, die zu unerwarteten Ergebnissen fĂŒhren kann und weshalb der Fehler im Strict Mode erscheint.

Drei Dinge ĂŒber deklarierte und nicht deklarierte Variablen:

  • Deklarierte Variablen gehören zu dem AusfĂŒhrungskontext, in dem sie deklariert werden. Nicht deklarierte Variablen sind immer global.
  • Deklarierte Variablen werden erstellt bevor Code ausgefĂŒhrt wird. Nicht deklarierte Variablen existieren erst, wenn der zugehörige Code ausgefĂŒhrt wird.
  • Deklarierte Variablen sind eine nicht konfigurierbare Eigenschaft des AusfĂŒhrungskontextes (Funktion oder global). Nicht deklarierte Variablen sind konfigurierbar (sie können z. B. gelöscht werden).

Mehr Details und Beispiele findet man auf der var Referenzseite.

Fehler mit nicht deklarierten Variablenzuweisungen gibt es nur im Strict Mode Code. Außerhalb davon wird die Warnung einfach Ignoriert.

Beispiele

Falsche FĂ€lle

In diesem Fall ist die "bar" eine nicht deklarierte Variable.

function foo() {
  'use strict';
  bar = true;
}
foo(); // ReferenceError: assignment to undeclared variable bar

Richtige FĂ€lle

Um "bar" zu einer deklarierten Variable zu machen, kann das SchlĂŒsselwort var eingesetzt werden.

function foo() {
  'use strict';
  var bar = true;
}
foo();

Siehe auch