Heim > Web-Frontend > js-Tutorial > Hauptteil

Der seltsame Löschoperator in JavaScript_javascript-Tipps

WBOY
Freigeben: 2016-05-16 16:09:56
Original
1111 Leute haben es durchsucht

Der Löschoperator wird in JavaScript nicht sehr häufig verwendet, aber seine Eigenschaften sind tatsächlich sehr seltsam.

1, löschen Sie die Attribute des Objekts, Code:

Code kopieren Der Code lautet wie folgt:

var o = {
a: 1,
b: 2
};
o.a. löschen;
alarm(o.a); //undefiniert

Löscht das Löschen also die Attribute oder Attributwerte des Objekts? Ich begann zu denken, dass das, was gelöscht wurde, der Wert sein sollte, weil das Ergebnis undefiniert war und kein Fehler gemeldet wurde. Aber tatsächlich ist meine Ansicht falsch, zum Beispiel:

Code kopieren Der Code lautet wie folgt:

var o = {};
var a = {
Profi: „zhenn“
};
o.c = a;
delete o.c; //Löschen Sie das Attribut a
des Objekts o console.log(o.c); // undefiniert
console.log(a.pro); // zhenn

Anhand des obigen Codes ist es nicht schwer zu erkennen, dass nach dem Löschen von o.c der Wert, auf den o.c zeigt, nicht gelöscht wird, d. h. Objekt a ist noch vorhanden, andernfalls sollte a.pro die Kompilierungsstufe nicht bestehen. Apropos, Sie können verstehen, dass Löschen die Attribute des Objekts löscht. Tatsächlich entspricht dies dem Löschen des Verweises auf den Attributwert im Objekt, aber dieser Wert befindet sich immer noch im Objektstapel!

2. Für Operationen an Arrays schauen Sie sich zuerst den Code an:

Code kopieren Der Code lautet wie folgt:

var arr = [1,2,3];
arr[2];
löschen console.log(arr.length); // 3
console.log(arr); // [1,2,undefiniert]

Es wurde erneut bewiesen, dass durch Löschen das Element nicht tatsächlich gelöscht wird, sondern nur der dem Element entsprechende Schlüsselwert. Um die Natur des Löschens besser zu verstehen, vergleichen Sie es mit der Pop-Methode in Array. Wie folgt:

Code kopieren Der Code lautet wie folgt:

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

Jetzt soll die Wahrheit ans Licht kommen.

3. Die oben genannten Operationen an Objekten und Arrays sind leicht zu verstehen, aber die Operation von Variablen ist zwangsläufig verwirrend. Der Code lautet wie folgt:

Code kopieren Der Code lautet wie folgt:

var a = 1;
lösche ein;
alarm(a); // 1

Funktion fn(){ return 42;🎜> fn löschen;
alarm(fn()); // 42

b = 2;
b löschen;
warning(b); // b ist nicht definiert;

Es ist auch eine globale Variable, die nicht gelöscht werden kann, aber die direkt deklarierte Variable b kann gelöscht werden. In der Erklärung von ECMA. Es bedeutet nur, dass über var deklarierte Variablen und über function deklarierte Funktionen das DontDelete-Attribut haben und nicht gelöscht werden können.


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage