TypeError: Eigenschaft "x" ist nicht konfigurierbar und kann nicht gelöscht werden

Die JavaScript-Ausnahme "Eigenschaft ist nicht konfigurierbar und kann nicht gelöscht werden" tritt auf, wenn versucht wurde, eine Eigenschaft zu löschen, die nicht konfigurierbar ist.

Nachricht

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-Modus.

Was ist schiefgelaufen?

Es wurde versucht, eine Eigenschaft zu löschen, die nicht konfigurierbar ist. 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-Modus-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, können jedoch mit Object.defineProperty() oder Object.freeze() erstellt werden.

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 integriert sind. Möglicherweise haben Sie versucht, eine mathematische Konstante zu löschen.

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

Siehe auch