diff options
Diffstat (limited to 'files')
-rw-r--r-- | files/pt-br/web/javascript/reference/errors/cant_delete/index.md | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/files/pt-br/web/javascript/reference/errors/cant_delete/index.md b/files/pt-br/web/javascript/reference/errors/cant_delete/index.md new file mode 100644 index 0000000000..954dfdbdf2 --- /dev/null +++ b/files/pt-br/web/javascript/reference/errors/cant_delete/index.md @@ -0,0 +1,71 @@ +--- +title: 'TypeError: property "x" is non-configurable and can''t be deleted' +slug: Web/JavaScript/Reference/Errors/Cant_delete +tags: + - Error + - Errors + - JavaScript + - Strict Mode + - TypeError +--- +{{jsSidebar("Errors")}} + +A exceção do Javascript "property is non-configurable and can't be deleted" ocorre +quando é feita a tentativa de deletar uma propriedade, mas a propriedade [não é configurável](/pt-BR/docs/Web/JavaScript/Data_structures#properties). + +## Mensagem + +```js +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 + +{{jsxref("TypeError")}} apenas no modo strict. + +## O que deu errado? + +Foi feita a tentativa de deletar uma propriedade, mas esta propriedade [não é configurável](/pt-BR/docs/Web/JavaScript/Data_structures#properties). O +atributo `configurable` controla se a propriedade pode ser deletada do +objeto e se seus atributos (Exceto `writable`) podem ser alterados. + +Este erro acontece apenas no modo [strict](/pt-BR/docs/Web/JavaScript/Reference/Strict_mode). No +modo de código não estrito, a operação retorna `false`. + +## Exemplos + +### Tentando excluir uma propriedade não configurável + +Propriedades não configuráveis não são comuns, mas podem ser criadas usando +{{jsxref("Object.defineProperty()")}} ou {{jsxref("Object.freeze()")}}. + +```js example-bad +'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 +``` + +Também existem algumas propriedades não configuráveis embutidas no Javascript. Talvez você tenha +tentado deletar uma constante matemática. + +```js example-bad +'use strict'; +delete Math.PI; // TypeError +``` + +## Veja também + +- [Operador delete](/pt-BR/docs/Web/JavaScript/Reference/Operators/delete) +- {{jsxref("Object.defineProperty()")}} +- {{jsxref("Object.freeze()")}} |