TypeError: ungültige Zuweisung zu const "x"

Die JavaScript-Ausnahme "ungültige Zuweisung zu const" tritt auf, wenn versucht wurde, einen konstanten Wert zu ändern. JavaScript const Deklarationen können weder neu zugewiesen noch neu deklariert werden.

Nachricht

TypeError: Assignment to constant variable. (V8-based)
TypeError: invalid assignment to const 'x' (Firefox)
TypeError: Attempted to assign to readonly property. (Safari)

Fehlertyp

Was ist schiefgelaufen?

Eine Konstante ist ein Wert, der während der normalen Ausführung durch das Programm nicht geändert werden kann. Sie kann nicht durch eine erneute Zuweisung geändert werden und kann nicht neu deklariert werden. In JavaScript werden Konstanten mit dem const Schlüsselwort deklariert.

Beispiele

Ungültige Neudeklaration

Die Zuweisung eines Wertes zum selben Konstantennamen im selben Blockbereich wird einen Fehler werfen.

js
const COLUMNS = 80;

// …

COLUMNS = 120; // TypeError: invalid assignment to const `COLUMNS'

Behebung des Fehlers

Es gibt mehrere Möglichkeiten, diesen Fehler zu beheben. Überprüfen Sie, was mit der betreffenden Konstante erreicht werden sollte.

Umbenennen

Wenn Sie eine andere Konstante deklarieren wollten, wählen Sie einen anderen Namen und benennen Sie um. Dieser Konstantenname ist in diesem Bereich bereits vergeben.

js
const COLUMNS = 80;
const WIDE_COLUMNS = 120;

const, let oder var?

Verwenden Sie const nicht, wenn Sie nicht beabsichtigt haben, eine Konstante zu deklarieren. Vielleicht wollten Sie eine blockgebundene Variable mit let oder eine globale Variable mit var deklarieren.

js
let columns = 80;

// …

columns = 120;

Gültigkeitsbereich

Prüfen Sie, ob Sie sich im richtigen Bereich befinden. Sollte diese Konstante in diesem Bereich erscheinen oder war sie beispielsweise in einer Funktion vorgesehen?

js
const COLUMNS = 80;

function setupBigScreenEnvironment() {
  const COLUMNS = 120;
}

const und Unveränderlichkeit

Die const-Deklaration erstellt einen schreibgeschützten Verweis auf einen Wert. Dies bedeutet nicht, dass der von ihr gehaltene Wert unveränderlich ist, sondern nur, dass der Variablenidentifikator nicht neu zugewiesen werden kann. Wenn der Inhalt ein Objekt ist, bedeutet dies, dass das Objekt selbst noch geändert werden kann. Dies bedeutet, dass Sie den in einer Variablen gespeicherten Wert nicht verändern können:

js
const obj = { foo: "bar" };
obj = { foo: "baz" }; // TypeError: invalid assignment to const `obj'

Aber Sie können die Eigenschaften in einer Variablen verändern:

js
obj.foo = "baz";
obj; // { foo: "baz" }

Siehe auch