TypeError: property "x" is non-configurable and can't be deleted

Die JavaScript-Ausnahme "property is non-configurable and can't be deleted" tritt auf, wenn versucht wurde, eine Eigenschaft zu löschen, diese Eigenschaft jedoch nicht konfigurierbar ist.

Meldung

TypeError: Cannot delete property 'x' of #<Object> (V8-based)
TypeError: property "x" is non-configurable and can't be deleted (Firefox)
TypeError: Unable to delete property. (Safari)

Fehlertyp

TypeError nur im Strict Mode.

Was ist schiefgelaufen?

Es wurde versucht, eine Eigenschaft zu löschen, diese Eigenschaft ist jedoch nicht konfigurierbar. Das configurable-Attribut steuert, ob die Eigenschaft aus dem Objekt gelöscht werden kann und ob ihre Attribute (außer writable) geändert werden können.

Dieser Fehler tritt nur in Strict Mode-Code auf. In nicht-striktem Code gibt die Operation false zurück.

Beispiele

Versuch, nicht konfigurierbare Eigenschaften zu löschen

Nicht konfigurierbare Eigenschaften sind nicht sehr häufig, aber sie können erstellt werden mit Object.defineProperty() oder Object.freeze().

js
"use strict";
const obj = Object.freeze({ name: "Elsa", score: 157 });
delete obj.score; // TypeError
js
"use strict";
const obj = {};
Object.defineProperty(obj, "foo", { value: 2, configurable: false });
delete obj.foo; // TypeError
js
"use strict";
const frozenArray = Object.freeze([0, 1, 2]);
frozenArray.pop(); // TypeError

Es gibt auch einige nicht konfigurierbare Eigenschaften, die in JavaScript eingebaut sind. Vielleicht haben Sie versucht, eine mathematische Konstante zu löschen.

js
"use strict";
delete Math.PI; // TypeError

Siehe auch