Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
TypeError: property "x" is non-configurable and can't be deleted
A exceção do Javascript "property is non-configurable and can't be deleted" ocorrequando é feita a tentativa de deletar uma propriedade, mas a propriedadenão é configurável.
In this article
Mensagem
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)Tipo de Erro
TypeError apenas no modo strict.
O que deu errado?
Foi feita a tentativa de deletar uma propriedade, mas esta propriedadenão é configurável. Oatributoconfigurable controla se a propriedade pode ser deletada doobjeto e se seus atributos (Excetowritable) podem ser alterados.
Este erro acontece apenas no modostrict. Nomodo de código não estrito, a operação retornafalse.
Exemplos
>Tentando excluir uma propriedade não configurável
Propriedades não configuráveis não são comuns, mas podem ser criadas usandoObject.defineProperty() ouObject.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(); // TypeErrorTambém existem algumas propriedades não configuráveis embutidas no Javascript. Talvez você tenhatentado deletar uma constante matemática.
"use strict";delete Math.PI; // TypeError