Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
TypeError: property "x" is non-configurable and can't be deleted
Message
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)
Dans cet article
Type d'erreur
TypeError in strict mode only.
Quel est le problème ?
Une instruction demande la suppression d'une propriéténon-configurable. L'attributconfigurable permet de contrôler si la propriété peut être supprimée de l'objet auquel elle est rattachée et si ces attributs (en dehors dewritable) peuvent être modifiés.
Cette erreur ne se produit qu'enmode strict. En mode non-strict, l'opération de suppression renverrafalse.
Exemples
Les propriétés non-configurables ne sont pas très fréquentes mais il est possible d'en créer grâce àObject.defineProperty() ou àObject.freeze().
"use strict";var obj = Object.freeze({ name: "Elsa", score: 157 });delete obj.score; // TypeError("use strict");var obj = {};Object.defineProperty(obj, "toto", { value: 2, configurable: false });delete obj.toto; // TypeError("use strict");var frozenArray = Object.freeze([0, 1, 2]);frozenArray.pop(); // TypeErrorCertaines propriétés natives de JavaScript sont non-configurables. Peut-être que le code tente de supprimer une constante mathématique :
"use strict";delete Math.PI; // TypeError