La suppression de l'opérateur n'est pas très couramment utilisée en JavaScript, mais ses caractéristiques sont en effet très étranges.
1. Supprimer les propriétés de l'objet, code:
La copie de code est la suivante:
var o = {
A: 1,
B: 2
};
supprimer OA;
alerte (OA); //indéfini
Ainsi, est supprimé l'attribut de l'objet ou la valeur d'attribut de l'objet? J'ai commencé à penser que la suppression devrait être la valeur, car le résultat n'est pas défini et il n'y a pas d'erreur. Mais en fait, mon opinion est erronée, donnez un exemple:
La copie de code est la suivante:
var o = {};
var a = {
Pro: "Zhenn"
};
oc = a;
Supprimer OC; // Supprimer la propriété A de l'objet o
console.log (OC); // indéfini
console.log (a.pro); // Zhenn
Grâce au code ci-dessus, il n'est pas difficile de voir qu'après supprimer OC, la valeur indiquée par OC n'est pas supprimée, c'est-à-dire que l'objet a toujours, sinon a.pro ne devrait pas pouvoir passer le niveau de compilation. En parlant de cela, on peut comprendre que Supprimer supprime les attributs d'un objet de cette manière, ce qui équivaut en fait à la suppression d'une référence à la valeur d'attribut dans l'objet, mais cette valeur est toujours dans la pile d'objets!
2. Pour le fonctionnement du tableau, regardez d'abord le code:
La copie de code est la suivante:
var arr = [1,2,3];
supprimer arr [2];
console.log (arr.length); // 3
console.log (arr); // [1,2, indéfini]
Il a été prouvé à nouveau que Delete ne supprime pas vraiment l'élément, il supprime simplement la valeur clé correspondant à l'élément. Afin de comprendre davantage l'essence de Supprimer, comparez-la avec la méthode POP dans le tableau. comme suit:
La copie de code est la suivante:
var arr = [1,2,3];
arr.pop ();
console.log (arr); // [1,2]
console.log (arr.length) // 2
La vérité devrait être révélée maintenant.
3. Les opérations ci-dessus sur les objets et les tableaux sont faciles à comprendre, mais les opérations sur les variables sont inévitablement difficiles à comprendre. Le code est le suivant:
La copie de code est la suivante:
var a = 1;
supprimer a;
alerte (a); // 1
fonction fn () {return 42; }
supprimer fn;
alerte (fn ()); // 42
b = 2;
supprimer b;
alerte (b); // b n'est pas défini;
Il est difficile à expliquer. Il s'agit également d'une variable globale, mais la variable B déclarée avec VAR ne peut pas être supprimée. Il est impossible de dire que la suppression est très étrange. Dans l'explication donnée par l'ECMA, cela signifie seulement que les variables déclarées via VAR et les fonctions déclarées via la fonction ont la fonctionnalité Dontdelete et ne peuvent pas être supprimées.