Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
L'opérateur delete permet de retirer une propriété d'un objet.
où expression est évaluée comme une référence à une propriété :
Le nom d'un objet ou une expression dont l'évaluation fournit un objet.
proprieteLa propriété qu'on souhaite supprimer.
true pour tous les cas sauf lorsque la propriété est une propriété propre non-configurable auquel cas false est renvoyé en mode non-strict.
Cet opérateur lève une exception TypeError en mode strict si la propriété est une propriété propre qui est non-configurable.
Contrairement à ce qu'on pourrait penser, l'opérateur delete n'a rien à voir avec une libération de mémoire directe. La gestion de la mémoire en JavaScript est réalisée de façon indirecte en tenant compte des références, voir cette page pour plus de détails.
L'opérateur delete permet de retirer une propriété donnée d'un objet. Lorsque la suppression se déroule sans problème, l'opération renvoie true, sinon c'est la valeur false qui est renvoyée. Voici quelques scénarios importants qui précisent ce comportement :
Si la propriété qu'on souhaite supprimer n'existe pas, delete n'aura aucun effet et l'opération renverra true
Si une propriété du même nom existe sur la chaîne de prototypes, après la suppression, l'objet utilisera la propriété disponible sur la chaîne de prototypes. Autrement dit, delete n'a d'effet que sur les propriétés directement rattachées à un objet (les propriétés « propres »).
Toute propriété déclarée avec var ne peut pas être supprimée de la portée globale ou de la portée d'une fonction.
Toute propriété déclarée avec let ou const ne peut être supprimée de la portée dans laquelle elles ont été créées.
Les propriétés non-configurable ne peuvent pas être retirées. Cela inclut les propriétés des objets natifs comme Math, Array, Object et les propriétés qui sont créées comme non-configurable grâce à la méthode Object.defineProperty().
Voici un fragment de code qui illustre certains cas :
Lorsqu'une propriété est marquée comme non-configurable, delete n'aura aucun effet et l'opération renverra false. En mode strict, cela déclenchera une exception TypeError.
var (ou let ou const) crée des propriétés non-configurables qui ne peuvent pas être supprimées via delete :
En mode strict, cela aurait déclenché une exception.
Lorsqu'on est en mode strict, si delete est utilisé sur une référence directe à une variable, un argument de fonction ou un nom de fonction, il déclenchera une exception SyntaxError.
Toute variable définie avec var est marquée comme non-configurable. Dans l'exemple qui suit, salaire est non-configurable et ne peut pas être supprimé. En mode non-strict, l'opération delete renverra false.
Voyons comment ce code se comporte en mode strict : au lieu de renvoyer false, l'instruction lève une exception SyntaxError.
Dans l'exemple qui suit, on supprime une propriété directement rattachée à un objet (une propriété « propre ») alors qu'une propriété du même nom existe sur la chaîne de prototypes :
Lorsqu'on supprime un élément d'un tableau, la longueur du tableau n'est pas modifiée. Cela vaut également lorsqu'on supprime le dernier élément du tableau.
Lorsqu'on utilise delete pour retirer un élément du tableau, cet élément n'est plus dans le tableau. Dans l'exemple suivant, on retire arbres[3] grâce à delete.
Si on veut conserver l'existence d'un élément du tableau avec une valeur indéfinie, on pourra affecter la valeur undefined à cet élément. Ainsi, contrairement à l'exemple précédent, en utilisant undefined, arbres[3] continue d'être présent :
Si on souhaite plutôt retirer un élément du tableau en changeant le contenu du tableau, on pourra utiliser la méthode Array.splice(). Dans l'exemple qui suit, la valeur actuelle de arbres[3] est retirée du tableau grâce à splice() mais l'index suivant se décale et arbres[4] devient arbres[3] :
| ECMAScript® 2027 Language Specification # sec-delete-operator |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 7 sept. 2025 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.