Dieser Artikel stellt hauptsächlich die Lernerfahrung von Abschlüssen in js und die wichtigen Punkte des Codeschreibens vor. Freunde, die daran interessiert sind, sollten gemeinsam lernen.
Verschluss
Die chinesische Bedeutung ist, ein Paket zu verschließen. Wenn wir uns den Umfang einer Funktion als Paket vorstellen, spiegelt dieses Wort ihre 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 Bereichskette erinnern und darauf zugreifen kann, in der sie sich befindet. Natürlich sind die meisten Abschlüsse nicht so intuitiv, da die Sub-. Die Funktion 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 im globalen Bereich darauf zugreifen (hier ist der Fenster) Wenn es um den Wert des Bereichs des lokalen Bereichs (einer Funktion) geht, ist dies gemäß dem normalen lexikalischen Bereich nicht möglich, aber wenn wir Abschlüsse verwenden, ist dies möglich. Dann schauen wir uns etwas an, was 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();
Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.
Verwandte Artikel:
Implementieren Sie die Lupe mithilfe der JQuery-Technologie
Automatische Seitenaktualisierung im Webpack-Dev-Server implementieren
Das obige ist der detaillierte Inhalt vonVerschlüsse in js (ausführliches Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!