5 choses à savoir sur l’opérateur delete en JavaScript
Si la propriété que vous essayez de supprimer n’existe pas, delete n’aura aucun effet et pourra retourner true.
Peut-on supprimer des variables en Javascript ?
L’opérateur delete supprime une propriété d’un objet. Il ne peut pas supprimer une variable. Toute propriété déclarée avec var
ne peut être supprimée de la portée globale ou de la portée d’une fonction.
Si vous déclarez une variable sans var, elle peut être supprimée. Examinons l’exemple ci-dessous.
La variable déclarée sans le mot clé var
la stocke en interne comme une propriété de l’objet window
. Nous pouvons donc supprimer les propriétés de l’objet window
.
Peut-on supprimer les valeurs d’un tableau ?
Puisque les tableaux JavaScript sont des objets, les éléments peuvent être supprimés en utilisant delete
.
.
delete
supprimera la propriété de l’objet, mais ne réindexera pas le tableau et ne mettra pas à jour sa longueur. Cela donne l’impression que c’est undefined
.
L’utilisation de delete
peut laisser des trous indéfinis dans le tableau. Utilisez plutôt pop()
shift()
, ou splice()
.
Peut-on supprimer des objets intégrés ?
Suppression d’objets intégrésdans les objets comme Math
Date
, et les objets window
ne sont pas sûrs, et ils peuvent faire planter toute votre application.
Suppression des propriétés non configurables
Les propriétés des objets, outre un value
, possèdent trois attributs spéciaux :
-
writable
– sitrue
, la valeur peut être modifiée, sinon, elle est en lecture seule. -
enumerable
– sitrue
, elle est listée dans les boucles, sinon, elle n’est pas listée. -
configurable
– sitrue
, la propriété peut être supprimée ou les attributs peuvent être modifiés, sinon, elle ne peut pas être modifiée.
Les valeurs attribuées en utilisant Object.defineProperty
et définies sur configurable: false
dans un objet ne peuvent pas être supprimées.
En mode strict, il lancera une erreur si vous essayez de supprimer une propriété non configurable.
Conclusion
delete
est le seul vrai moyen de supprimer les propriétés d’un objet sans aucun reste, mais elle fonctionne ~100 fois plus lentement si vous utilisez delete
dans des boucles.
La solution alternative consiste à définir la valeur à un
définie comme object = undefined
. Cela ne supprime pas complètement la propriété, il fixe juste la valeur à undefined. le choix n’est pas exactement une solution proéminente, mais si vous l’utilisez avec soin alors vous serez en mesure d’améliorer les performances.
C’est tout ! J’espère que ce texte pourra vous aider à perforer l’opérateur delete
Merci de nous avoir lu 🙂
.