Fehlermeldung
TypeError: invalid assignment to const "x" (Firefox) TypeError: Assignment to constant variable. (Chrome) TypeError: Redeclaration of const 'x' (IE/Edge)
Fehlertyp
Was ist falsch gelaufen?
Eine Konstante ist ein Wert, der nicht von einem Programm während der normalen Ausführung, geändert werden kann. Sie kann nicht durch erneutes Zuweisen und Neudeklarationen geändert werden. In JavaScript werden Konstanten mit dem const
Schlüsselwort deklariert.
Beispiel
Nicht valide Neudeklaration
Weist eine Konstanten erneut einen Wert zu. Führt zu einem Fehler.
const COLUMNS = 80;
// ...
COLUMNS = 120; // TypeError: invalid assignment to const `COLUMNS'
Den Fehler auflösen
Es gibt mehrere Optionen, um den Fehler zu vermeiden. Überprüfen Sie, was mit der betreffenden Konstante erreicht werden sollte.
Umbenennen
Wenn Sie eine andere Konstante deklarieren möchten, wählen Sie einen anderen Namen und benennen Sie ihn um. Dieser konstante Name ist dann in diesem Bereich vergeben.
const COLUMNS = 80;
const WIDE_COLUMNS = 120;
const
, let
or var
?
Verwenden Sie nicht const
, wenn Sie keine Konstante deklarieren wollten. Vielleicht soll eine Blockvariable mit let
oder eine globale Variable mit var
deklariert werden.
let columns = 80;
// ...
let columns = 120;
Gültigkeitsbereich
Prüfen Sie, ob Sie im richtigen Gültigkeitsbereich sind. Sollte diese Konstante in diesen Gültigkeitsbereich oder sollte diese zum Beispiel in eine Funktion.
const COLUMNS = 80;
function setupBigScreenEnvironment() {
const COLUMNS = 120;
}
const
und Unveränderlichkeit
Die const
Deklaration erstellt eine nur lesbare Referenz zu einem Wert. Das bedeutet nicht, dass der enthaltene Wert Unveränderbar ist, sondern nur, dass der Bezeichner nicht neu definiert werden kann. Wenn die Konstante zum Beispiel ein Objekt ist, kann das Objekt selbst verändert werden. Es bedeutet nur, dass der Wert in der Variable nicht verändert werden kann.
const obj = {foo: 'bar'};
obj = {foo: 'baz'}; // TypeError: invalid assignment to const `obj'
Aber man kann die Eigenschaften der Variable verändern:
obj.foo = 'baz';
obj; // Object { foo: "baz" }