Heim > Web-Frontend > js-Tutorial > Verstehen Sie den js-Recyclingmechanismus in einer leicht verständlichen Version_Javascript-Kenntnisse

Verstehen Sie den js-Recyclingmechanismus in einer leicht verständlichen Version_Javascript-Kenntnisse

WBOY
Freigeben: 2016-05-16 15:13:08
Original
1042 Leute haben es durchsucht

Im vorherigen Artikel habe ich den Recyclingmechanismus in js erklärt, aber ich war damals etwas verwirrt über das Konzept des Recyclingmechanismus. Jetzt habe ich ein tieferes Verständnis des Recyclingmechanismus, also poste dies hiermit Artikel zur Zusammenfassung und Vertiefung Ihres Gedächtnisses.
Warum gibt es einen Recyclingmechanismus? Warum?

Ich habe zum Beispiel eine Speicherkarte mit 8 GB. Da ich immer mehr Inhalte speichere, kann sie nicht gespeichert werden Um andere Dateien auf dieser Speicherkarte zu speichern, muss ich einige Dateien löschen. Aber diese gelöschten Dateien werden von uns selbst gelöscht, oder?

Diese Probleme treten auch in diesen Programmiersprachen auf, ja, Speicher! Alle von uns deklarierten Variablen verbrauchen Speicher. Je mehr Variablen wir haben, desto langsamer wird die Ausführung. Natürlich nicht nur Variablen, sondern alles im Code. Um diese Probleme zu lösen, haben die Designer dieser Sprachen eine Reihe von Code-Recycling-Regeln entworfen.

Die Code-Recyclingregeln lauten wie folgt:

1. Globale Variablen werden nicht recycelt.

2. Lokale Variablen werden recycelt, d. h. sobald die Funktion beendet ist, wird alles in der Funktion zerstört.

3. Solange ein anderer Bereich darauf verweist, wird es nicht recycelt

Ich verwende einige Beispiele, um dies zu beweisen.

function a(){
 var user = "追梦子";
 return user;
}
var b = a();
console.log(b); //追梦子 
Nach dem Login kopieren

Logisch gesehen kann ich nicht auf die Variablen in Funktion a zugreifen, aber ich habe den Rückgabewert von Funktion a über die globale Variable b erhalten, sodass der endgültige Code wie folgt lautete.

function a(){
 var user = "追梦子";
 return user;
}
var b = "追梦子";
console.log(b);
Nach dem Login kopieren

Es scheint, dass es hier kein Code-Recycling gibt, also schauen wir uns den nächsten Codeabschnitt an.

function a(){
 var num = 0;
 return function(){
  num ++;
  console.log(num);
 };
}
var b = a();
b(); //1
b(); //2
b(); //3
Nach dem Login kopieren

Sehen Sie, wenn Sie der normalen Vorgehensweise folgen, sollte die Ausgabe dreimal und einmal erfolgen, denn sobald der Funktionskörper ausgeführt wird, wird der Code im Funktionskörper gelöscht Da er gelöscht wird, führen Sie diesen Abschnitt als Nächstes aus time Beim Schreiben des Codes sollte num immer noch 1 sein, aber die Situation ist hier etwas anders. Ich habe oben gesagt, dass dieser Code nicht zerstört wird, solange die lokalen Variablen in der Funktion von einem anderen Bereich referenziert werden.

Der obige Code sieht so aus

function a(){
 var num = 0;
 return function(){
  num ++;
  console.log(num);
 };
}
var b = function(){
  num ++;
  console.log(num);
 };
b();
b();
b();
Nach dem Login kopieren

Dann wird der Bereich der von Funktion a zurückgegebenen anonymen Funktion von Funktion a auf Fenster verschoben. Da diese anonyme Funktion von der globalen Variablen b referenziert wird, wird sie nicht zerstört.

function a(){
 var num = 0;
 return function(){
  num ++;
  console.log(num);
 };
}
var b = {
 fn:a()
}
b.fn(); //1
b.fn(); //2
b.fn(); //3
Nach dem Login kopieren

Dasselbe gilt, da die anonyme Funktion durch das Attribut fn von Objekt b referenziert wird, wodurch sich ihr Gültigkeitsbereich ändert. Einfach ausgedrückt: Solange der Gültigkeitsbereich einer Funktion oder lokalen Variablen geändert wird, wird dies bei der Funktion oder lokalen Variablen nicht der Fall sein zerstört.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, Sie können im js-Recyclingmechanismus etwas Hilfe finden.

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