Maison > interface Web > js tutoriel > L'étrange opérateur de suppression dans les astuces JavaScript_javascript

L'étrange opérateur de suppression dans les astuces JavaScript_javascript

WBOY
Libérer: 2016-05-16 16:09:56
original
1146 Les gens l'ont consulté

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 :

Copier le code Le code est le suivant :

var o = {
une : 1,
b:2
};
supprimer o.a;
alert(o.a); //non défini

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 :

Copier le code Le code est le suivant :

var o = {};
var une = {
pro : "zhenn"
};
o.c = a;
delete o.c; //Supprimer l'attribut a
de l'objet o console.log(o.c); // non défini
console.log(a.pro); // zhenn

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 :

Copier le code Le code est le suivant :

vararr = [1,2,3];
supprimer arr[2];
console.log(arr.length); // 3
console.log(arr); // [1,2,indéfini]

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 :

Copier le code Le code est le suivant :

vararr = [1,2,3];
arr.pop();
console.log(arr); // [1,2]
console.log(arr.length) // 2

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 :

Copier le code Le code est le suivant :

var a = 1;
supprimer un ;
alerte(a); // 1

fonction fn(){ return 42; }
supprimer fn ;
alerte(fn()); // 42

b = 2;
supprimer b;
alert(b); // b n'est pas défini ;

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.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal