Heim > Web-Frontend > js-Tutorial > Die Bedeutung des Abschlusses in JS

Die Bedeutung des Abschlusses in JS

一个新手
Freigeben: 2017-09-11 10:34:46
Original
1304 Leute haben es durchsucht


Abschluss

Ein Abschluss ist eine Funktion, die Zugriff auf eine Variable im Gültigkeitsbereich einer anderen Funktion hat.

So erstellen Sie einen Abschluss

Am häufigsten wird eine weitere Funktion innerhalb einer Funktion erstellt. Nehmen Sie als Beispiel die Funktion TrialFunction():

function TrialFunction(property) {

      return function(a, b) {
           var a1 = a[property];           var b1 = b[property];           if (a1 < b1) {                return -1;
           } else if (a1 > b1) {                return 1;
           } else {                return 0;
           }
      };
}
Nach dem Login kopieren

Im obigen Code greift die interne Funktion auf die Variableneigenschaft in der externen Funktion zu. Selbst wenn die innere Funktion zurückgegeben und an anderer Stelle aufgerufen wird, können andere weiterhin auf die Eigenschaftsvariable zugreifen.

Dies geschieht, weil die Bereichskette dieser internen Funktion den Bereich von TrialFunction umfasst.

Wenn eine Funktion aufgerufen wird, werden eine Ausführungsumgebung (Ausführungskontext) und eine entsprechende Bereichskette erstellt. Anschließend wird das Aktivitätsobjekt der Funktion mit den Werten von Argumenten und anderen benannten Parametern initialisiert. Aber in der Bereichskette steht das aktive Objekt der externen Funktion immer an zweiter Stelle, das aktive Objekt der externen Funktion an dritter Stelle und schließlich bis zur globalen Ausführungsumgebung als Bereichskette.

Um während der Funktionsausführung den Wert einer Variablen lesen und schreiben zu können, müssen Sie die Variable in der Bereichskette finden.

Dieser Mechanismus der Bereichskette führt zu einem Nebeneffekt, d. h. der Abschluss kann nur den letzten Wert einer Variablen in der enthaltenden Funktion erhalten.
Zum Beispiel:

function example() {
   var result = new Array();  
   for (var i = 0; i < 10; i++) 
   {
      result[i] = function() 
      {
         return i;
      }
   }   return result;
}
Nach dem Login kopieren

Diese Funktion gibt ein Array zurück. Im Allgemeinen wird jeder denken, dass jede Funktion ihren eigenen Index zurückgeben sollte, also [0, 1, 2, ...9 ]; aber tatsächlich gibt jede Funktion 10 zurück.

Das obige ist der detaillierte Inhalt vonDie Bedeutung des Abschlusses in JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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