L'opérateur delete n'est pas très couramment utilisé en JavaScript, mais ses caractéristiques sont en effet très étranges.
1, supprimez les attributs de l'objet, code :
Alors, delete supprime-t-il les attributs de l'objet ou les valeurs des attributs de l'objet ? J'ai commencé à penser que ce qui était supprimé devrait être la valeur, car le résultat n'était pas défini et aucune erreur n'était signalée. Mais en fait, mon avis est faux, par exemple :
Grâce au code ci-dessus, il n'est pas difficile de voir qu'après la suppression de o.c, la valeur pointée par o.c n'est pas supprimée, c'est-à-dire que l'objet a existe toujours, sinon a.pro ne devrait pas passer le niveau de compilation. En parlant de ça, vous pouvez comprendre que delete supprime les attributs de l'objet. En fait, cela équivaut à supprimer la référence à la valeur de l'attribut dans l'objet, mais cette valeur est toujours dans la pile d'objets !
2. Pour les opérations sur les tableaux, regardez d'abord le code :
Encore une fois, il est prouvé que delete ne supprime pas réellement l'élément, mais supprime uniquement la valeur clé correspondant à l'élément. Afin de mieux comprendre la nature de la suppression, comparez-la avec la méthode pop dans Array. Comme suit :
Maintenant, la vérité devrait être révélée.
3. Les opérations ci-dessus sur les objets et les tableaux sont faciles à comprendre, mais le fonctionnement des variables est inévitablement déroutant. Le code est le suivant :
C'est difficile à expliquer. C'est aussi une variable globale. Celle déclarée avec var ne peut pas être supprimée, mais la variable directement déclarée b peut être supprimée. Je dois dire que delete est très étrange. c'est seulement Cela signifie que les variables déclarées via var et les fonctions déclarées via function ont l'attribut DontDelete et ne peuvent pas être supprimées.