Ich habe lange Zeit mit JavaScript in Kontakt und jedes Mal, wenn ich Schließungen verstehe, suche ich kürzlich nach Arbeit am Frontend des Webs. Daher muss ich die Stiftung konsolidieren.
Dieser Artikel bezieht sich auf Joy_Lees Blogverschluss basierend auf ihrem Blog und bemüht sich, mein Verständnis in Form von Kommentaren zu erklären. Wenn es Unangemessenheit gibt, sind Kritik und Korrektur willkommen.
In der fortschrittlichen Programmierung heißt dies: Wenn andere Funktionen in einer Funktion definiert sind, wird ein Verschluss erzeugt. Der Verschluss hat die Erlaubnis, auf alle in der Funktion enthaltenen Variablen zugreifen zu können.
(Wie verstehen Sie diesen Satz? Nach diesem Satz ist eine Schließung eine verschachtelte Funktion! Eine verschachtelte Funktion kann natürlich auf die Variablen der Funktion zugreifen, die sie enthält, und es gibt kein Problem.)
Im Allgemeinen können interne Funktionen auf Variablen auf der vorherigen Ebene oder sogar auf globaler Ebene zugreifen. Einige Menschen verstehen dies: Durch Verschlüsse können externer Zugang zu Variablen innerhalb der lokalen Funktion erreicht werden.
(If we simply divide the scope into one level, suppose the global scope as the first level, where the defined function body internal scope is the second level, and the defined function body internal scope is nested within the second level scope as the third level, etc. In traditional sense, the first level cannot access the second level variable (this variable is called local variable), and the second level cannot access the third level,..., and vice versa, which is the scope chain. The scope cannot be found In dem Umfang dieser Ebene kann der Global der ersten Ebene auf die vorherige Stufe gesucht werden. Müllmechanismus, um die von dieser Kette besetzte Ressourcen zu recyceln.
Funktion a () {var i = 0; Funktion b () {alert (++ i); } return b; } var c = a (); C();Das heißt, die Funktion des Verschlusses ist, dass nach einer Ausführung und zurückgegebener Rückgabe die JavaScript -Müllsammlung Mechanismus GC die von A besetzten Ressourcen nicht wiedererlangt, da die Ausführung einer internen Funktion B von A auf die Variablen in A beruhen muss.
Aufgrund der Existenz des Verschlusses existiert nach der Funktion eine Rückgabe eine Rückgabe. Auf diese Weise ist ich jedes Mal, wenn C () ausgeführt wird, der Wert von Ich alarmiert nach dem Hinzufügen von 1.
Wenn a dann die Funktion B nicht zurückgibt, ist die Situation völlig anders. Da nach A ausgeführt wurde, wird B nicht in die äußere Welt von A zurückgegeben, sondern nur von A verwiesen, und zu diesem Zeitpunkt wird A nur von B verwiesen, sodass die Funktionen A und B voneinander verwiesen werden, aber nicht von der Außenwelt bezogen werden (von der Außenwelt), werden von GC auf Funktionen A und B recycelt.
Tatsächlich ist es der Verschluss, der den Lebenszyklus der Variablen erweitert. Normalerweise wird der Umfang einer Funktion, dh Variablen, zerstört, nachdem die Funktion ausgeführt wurde. Wenn die Funktion jedoch einen Verschluss zurückgibt, sofern der Verschluss nicht freigegeben wird, wird die gesamte Geltungskette das Gedächtnis besetzt. (Schließungen verlängern den Lebenszyklus einer Variablen, der sich auf den Fall der Referenz auf der ersten Ebene bezieht. Wenn jedoch ohne diese Referenz Schließungen als Schließungen bezeichnet werden können?)
Apropos Geltungsbereich: Das heißt, der eigene Umfang der Funktion, den Umfang der vorherigen Schicht der Funktion ... und der globale Umfang. Wenn Sie sie nicht haben, schauen Sie nach der ganzen Welt auf eine Variable, wenn Sie sie nicht haben. Wenn Sie es noch nicht haben, werden Sie einen Fehler melden.
(Ich möchte mich wirklich beschweren, dass die Umfangskette des Verschlusses gekrümmt ist.)
PS: Einige Internetnutzer empfahlen einen weiteren Artikel , um das Konzept der JavaScript -Schließungen zu analysieren . Ist es maßgeblich? Schließlich gibt es ein klares Konzept:
Was genau ist eine Schließung? Fassen wir es unten zusammen:
Verschluss ist ein Konzept, das ein Phänomen beschreibt, bei dem sich die Speicher nach der Funktionsausführung befindet. Solange Sie dieses Kernkonzept erfassen, sind Schließungen nicht schwer zu verstehen.
Mit dem obigen Artikel können Sie Verschlüsse in einem Satz verstehen (einfach und leicht zu verstehen) ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.