aboutsummaryrefslogtreecommitdiff
path: root/files
diff options
context:
space:
mode:
Diffstat (limited to 'files')
-rw-r--r--files/pt-br/web/javascript/reference/errors/cant_delete/index.md71
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()")}}