Closures sind eines der traditionellen Features rein funktionaler Programmiersprachen. Indem Closures als integraler Bestandteil der Kernkonstrukte der Sprache betrachtet werden, zeigt die Sprache JavaScript ihre enge Verwandtschaft zu funktionalen Programmiersprachen. Closures erfreuen sich in gängigen JavaScript-Bibliotheken und in hochrangigem Produktionscode zunehmender Beliebtheit, da sie komplexe Vorgänge vereinfachen können. 1. Variabler UmfangBevor wir Closures einführen, wollen wir zunächst den Variablenbereich von JavaScript verstehen. Es gibt zwei Arten von Variablenbereichen: globale Variablen und lokale Variablen. 1. Globale Variablenvar n = 999; //globale Variable Funktion f1() { a = 100; //Hier ist a auch eine globale Variable alert(n); } konsole.log(a); //100 Hier kann der Wert der Variablen direkt innerhalb und außerhalb der Funktion abgerufen werden - globale Variable 2. Lokale Variablen//lokale Variablen Funktion f2() { var b = 22; } console.log(b); //Fehler Hier kann der innerhalb der Funktion definierte Wert nicht direkt von außerhalb der Funktion abgerufen werden - lokale Variablen Was sollten wir an dieser Stelle tun, wenn wir den Wert einer lokalen Variablen von außen abrufen möchten? 2. So erhalten Sie lokale Variablen von außenSchauen wir uns ein Beispiel an: var outer = "Äußer"; // Globale Variable var kopieren; function outerFn(){ // Globale Funktion var inner = 'Inner'; // Diese Variable hat nur Funktionsumfang und kann nicht von außerhalb aufgerufen werden function innerFn(){ // innerFn() in outerFn() // Hier kann sowohl der globale Kontext als auch der umgebende Kontext verwendet werden. // So können Sie auf äußere und innere konsole.log(äußeres); Konsole.log(inner); } copy = innerFn; // Speichere eine Referenz auf innerFn() // Da copy im globalen Kontext deklariert ist, kann es extern verwendet werden} äußereFn(); copy(); // innerFn() kann nicht direkt aufgerufen werden, sondern über im globalen Bereich deklarierte Variablen. Lassen Sie uns das obige Beispiel analysieren. Auf die Variable outer kann innerhalb von innerFn() zugegriffen werden, da sie sich im globalen Kontext befindet. Nachdem outerFn() ausgeführt wurde, wird innerFn() ausgeführt, indem eine Referenz auf die Funktion in eine globale Variable kopiert wird. Dies ist die Kettenbereichsstruktur von JavaScript. Das untergeordnete Objekt sucht jeweils eine Ebene höher nach den Variablen aller übergeordneten Objekte. Daher sind alle Variablen des übergeordneten Objekts für das untergeordnete Objekt sichtbar, aber nicht umgekehrt. Auf diese Weise können wir die lokalen Variablen innerhalb der Funktion erhalten. 3. Das Konzept der Schließung Die copy()-Funktion im obigen Codeblock ist ein Abschluss. Meines Erachtens ist eine Closure eine Funktion, die die Variablen innerhalb der Funktion lesen kann. 4. Die Rolle des AbschlussesMeiner Meinung nach spiegelt sich die Rolle von Verschlüssen hauptsächlich in zwei Aspekten wider: 1. Sie können Variablen innerhalb der Funktion lesenDieser Effekt wurde im vorherigen Codeblock deutlich demonstriert. 2. Der Wert lokaler Variablen kann im Speicher gehalten werdenWie wir alle wissen, belegen lokale Variablen nur dann temporären Speicherplatz im Speicher, wenn sie verwendet werden, und der Speicherplatz wird nach Beendigung der Funktion automatisch freigegeben. Durch das Aufkommen von Closures können lokale Variablen genauso konsistent im Speicher gespeichert werden wie globale Variablen. Funktion c1() { var z = 9999; nAdd = Funktion() { z += 1; } Funktion c2() { console.log(z); } Rückgabe c2; } var Ergebnis = c1(); Ergebnis(); //9999 nAdd(); Ergebnis(); //10000 Im obigen Code wird c1() einmal ausgeführt, wobei z=9999 ist; nAdd() wird noch einmal ausgeführt, um z+1 zu machen; und c1() wird noch einmal ausgeführt, um den Wert von z zu diesem Zeitpunkt, z=10000, auszugeben. Dies bedeutet, dass der Wert von z immer im Speicher gespeichert bleibt und nicht nach dem ersten Aufruf von c1() automatisch gelöscht wird. An dieser Stelle sollten Sie darauf achten, dass die Verwendung von Closures viel Speicher verbraucht. Missbrauchen Sie Closures daher nicht. Löschen Sie vor dem Verlassen der Funktion alle nicht verwendeten lokalen Variablen. Dies ist das Ende dieses Artikels mit der ausführlichen Erläuterung von JavaScript-Closure-Problemen. Weitere relevante JavaScript-Closure-Probleme finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Konfiguration virtueller Domänennamen und Testüberprüfung in einer Linux\Nginx-Umgebung
>>: Zwei Möglichkeiten zum Löschen von Tabellendaten in MySQL und ihre Unterschiede
Da die Anwendung von CentOS auf der Serverseite i...
1. Umweltvorbereitung 1.MySQL-Installationspfad: ...
In diesem Artikelbeispiel wird der spezifische JS...
Inhaltsverzeichnis 1. Funktionsbindung 2. Mit Par...
Verwenden Sie apk add ansible, um den Ansible-Die...
Hier erfahren Sie, wie Sie nach der Verkleinerung...
1. Übersicht über SQLException Wenn bei der Verwe...
Inhaltsverzeichnis 1. Ändern Sie die Datei my.cnf...
1. Überprüfen Sie den Linux-Festplattenstatus df ...
Vorwort Kürzlich bin ich beim Upgrade von MySQL 5...
Für die Bereitstellung von Hyper-V gelten die fol...
Vorwort Wenn beim kontinuierlichen Code-Delivery-...
Vorwort Der Grund für das Schreiben dieses Artikel...
Inhaltsverzeichnis npm Installieren des Loaders P...
React Native implementiert die Überwachungsgeste ...