Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der Verwendung von Verschlüssen in js
Dieses Mal werde ich Ihnen die Verwendung von js-Verschlüssen ausführlich erläutern. Was sind die Vorsichtsmaßnahmen bei der Verwendung von js-Verschlüssen?
Verschluss
Die chinesische Bedeutung ist, ein Paket zu verschließen. Wenn wir den Umfang der Funktion als Paket betrachten, dann spiegelt dieses Wort seine Rolle anschaulich wider. Der normale Ausführungsablauf einer Funktion besteht darin, dass das Programm nach der Ausführung der Anweisungen in der Funktion automatisch den Gültigkeitsbereich der Funktion zerstört. Wenn jedoch eine andere Funktion in einer Funktion deklariert wird und eine Variable vorhanden ist, die auf die übergeordnete Funktion verweist Wenn die Unterfunktion ausgeführt wird, wird ein Abschluss gebildet, der dem Schließen des Bereichs der übergeordneten Funktion entspricht und verhindert, dass das Programm ihn zerstört.
Zum Beispiel:
function a() { var name = "xuxu"; function b() { console.log(name); } // 此处产生闭包 b(); } a();
Ein Abschluss wird erstellt, wenn sich eine Funktion an die Gültigkeitskette erinnern und darauf zugreifen kann. Natürlich sind die meisten Abschlüsse nicht so intuitiv, weil es sich um eine untergeordnete Funktion handelt kann außerhalb der übergeordneten Funktion aufgerufen werden, zum Beispiel:
function a() { var name = "xuxu"; function b() { console.log(name); } return b; } var c=a(); // 此处产生闭包 此处的c函数其实就是a函数 c();
Durch den obigen Code können wir auch den Vorteil eines Abschlusses erkennen, das heißt, wir können auf den globalen Bereich (hier Widow) zugreifen Der Wert des Bereichs des lokalen Bereichs (einer Funktion) ist gemäß dem normalen lexikalischen Bereich nicht möglich, aber wenn wir Abschlüsse verwenden, ist dies möglich. Schauen wir uns dann etwas an, das wir normalerweise häufiger schreiben:
function foo() { var a = 2; function baz() { // 2 console.log( a ); } bar( baz ); } function bar(fn) { // 大家快看呀,这就是闭包! fn(); }
oder
var fn; function foo() { var a = 2; function baz() { console.log( a ); } // 将baz分配给全局变量 fn = baz; } function bar() { // 大家快看呀,这就是闭包! fn(); } foo(); // 2 bar();
Die oben genannten sind auch Abschlüsse, sodass Unterfunktionen innerhalb der Funktion aufgerufen werden oder durch welche Art Wenn Sie die interne Funktion außerhalb des lexikalischen Bereichs übergeben, enthält sie einen Verweis auf den ursprünglichen Definitionsbereich, und überall dort, wo diese Funktion ausgeführt wird, wird ein Abschluss verwendet.
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
Detaillierte Erläuterung des Umfangs und der Voranalyse von js
Vue-Aufzählungstyp implementiert HTML
node+express implementiert Chatroom
Beobachtermodus ändert die Seitenanzahl
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung von Verschlüssen in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!