Thanks to visit codestin.com
Credit goes to developer.mozilla.org

This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

TypeError: property "x" is non-configurable and can't be deleted(свойство "x" не настраивается и не может быть удалено)

Сообщение

TypeError: вызов delete на 'x' не разрешён в строгом режиме (Edge)
TypeError: свойство "x" не настраивается и не может быть удалено. (браузер Firefox)
TypeError: не удаётся удалить свойство "x" из #<Object> (Chrome)

Тип ошибки

TypeError in strict mode only.

Что пошло не так?

Была сделана попытка удалить свойство, но это свойство не изменяется. Настраиваемый атрибут определяет, можно ли удалить свойство из объекта и можно ли изменить его атрибуты (отличные от доступных для записи).

Эта ошибка возникает только в коде строгого режима. В нестрогом коде операция возвращает false.

Примеры

Не настраиваемые свойства не очень распространены, но их можно создать с помощью Object.defineProperty() или Object.freeze().

js
"use strict";
var obj = Object.freeze({ name: "Elsa", score: 157 });
delete obj.score; // TypeError

("use strict");
var obj = {};
Object.defineProperty(obj, "foo", { value: 2, configurable: false });
delete obj.foo; // TypeError

("use strict");
var frozenArray = Object.freeze([0, 1, 2]);
frozenArray.pop(); // TypeError

В JavaScript также встроено несколько настраиваемых свойств. Возможно, вы пытались удалить математическую константу.

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

Смотрите также