--- title: 'TypeError: property "x" is non-configurable and can''t be deleted' slug: Web/JavaScript/Reference/Errors/Cant_delete tags: - JavaScript - TypeError - Строгий режим - помилка translation_of: Web/JavaScript/Reference/Errors/Cant_delete ---
TypeError: Calling delete on 'x' is not allowed in strict mode (Edge) TypeError: property "x" is non-configurable and can't be deleted. (Firefox) TypeError: Cannot delete property 'x' of #<Object> (Chrome)
{{jsxref("TypeError")}} тільки у строгому режимі.
Була спроба видалити властивість, але ця властивість недоступна для налаштування. Атрибут configurable
котролює, чи властивість об'єкта може бути видалена, та чи можна змінювати її атрибути (інші, крім writable
).
Ця помилка виникає лише у строгому режимі. У нестрогому режимі оператор повертає false
.
Властивості, недоступні для налаштування, не є дуже поширеними, але їх можна створити за допомогою {{jsxref("Object.defineProperty()")}} або {{jsxref("Object.freeze()")}}.
'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. Можливо, ви намагались видалити математичну константу.
'use strict'; delete Math.PI; // TypeError