Heim > Web-Frontend > js-Tutorial > Beispielerklärung für Abschlüsse und Rückrufe in JavaScript

Beispielerklärung für Abschlüsse und Rückrufe in JavaScript

黄舟
Freigeben: 2017-08-10 10:39:12
Original
1207 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich js-Abschlüsse und -Rückrufe sowie die Konzepte und Eigenschaften von Abschlüssen erläutert und die Schritte und Verwendungsmethoden anhand von Beispielen analysiert

1. Abschlüsse

Der Abschluss ist eine Schwierigkeit und ein Merkmal der Javascript-Sprache. Viele fortgeschrittene Anwendungen basieren auf dem Abschluss.

Verschlüsse haben drei Eigenschaften:

1. Funktionen verschachtelt

2. Funktionen können auf externe Parameter und Variablen verweisen;

3. Parameter und Variablen werden vom Garbage-Collection-Mechanismus nicht recycelt.

Ein Abschluss ist eine Funktion, die Zugriff auf eine Variable im Gültigkeitsbereich einer anderen Funktion hat. Die häufigste Methode zum Erstellen eines Abschlusses besteht darin, eine andere Funktion innerhalb einer Funktion zu erstellen und über eine andere lokale Funktion darauf zuzugreifen Variablen dieser Funktion. Ein Vor- und Nachteil der Verwendung von Abschlüssen besteht darin, dass lokale Variablen im Speicher liegen können und globale Variablen vermieden werden können. Globale Variablen sind in jedem Modul aufrufbar, was zwangsläufig katastrophale Folgen hat. Daher empfiehlt es sich, private, gekapselte lokale Variablen zu verwenden. Nachdem die allgemeine Funktion ausgeführt wurde, wird das lokal aktive Objekt zerstört und nur der globale Bereich im Speicher gespeichert. Bei Schließungen ist die Situation jedoch anders!

Beispiel 1:

//Ein Abschluss ist eine Funktion, deren Rückgabewert eine andere Funktion ist. Die zurückgegebene Funktion kann verwendet werden, um auf die lokalen Teile der Außenseite zuzugreifen Die äußere Variable.


function outer(){
  var val = 0;
  return function (){
   val += 1;
   document.write(val + "<br />");
  };
}
var outObj = outer();
outObj();//1,执行val += 1后,val还在
outObj();//2
outObj = null;//val 被回收
var outObj1 = outer();
outObj1();//1
outObj1();//2
Nach dem Login kopieren

Bei unsachgemäßer Verwendung erhöht sich der Speicherverbrauch (wenn viele äußere() definiert sind). Beispiel oben, Dann werden viele Val-Variablen im Speicher gespeichert.

Garbage-Collection-Prinzip von JavaScript:

(1) Wenn in JavaScript nicht mehr auf ein Objekt verwiesen wird, wird das Objekt von GC recycelt; >

(2) Wenn zwei Objekte aufeinander verweisen und nicht mehr von einem Dritten referenziert werden, werden auch die beiden Objekte, die aufeinander verweisen, recycelt.

Welche Vorteile bietet die Verwendung von Verschlüssen? Die Vorteile der Verwendung von Abschlüssen sind:

1. Ich hoffe, dass eine Variable lange im Speicher verbleibt

2. Vermeiden Sie die Verschmutzung globaler Variablen

3. Existenz privater Mitglieder

2. Prinzip des Rückrufs Funktion: Ich gehe jetzt, ich werde Sie benachrichtigen, wenn es eintrifft.“ Dies ist ein asynchroner Prozess. Während des Prozesses „Ich gehe“ (Funktionsausführung) kann „Sie“ alles tun und „Sie benachrichtigen“ (Rückruf). ) wenn „ankommt“ (Funktionsausführung ist abgeschlossen). >

//Fügen Sie die doSomething-Methode zur Thing-Klasse hinzu, in der das Konstruktoraufrufmuster verwendet wird


Wenn Sie eine Zahl haben Für ein Array möchten Sie eine öffentliche Methode zum Sortieren schreiben, aber die Sortiermethode (von klein nach groß oder von groß nach klein) wird von der Person bestimmt, die die Sortiermethode aufruft. Die Sortiermethode kann mithilfe von Rückrufen implementiert werden. Eine ist die Sortierung von klein nach groß und die andere ist die Sortierung von groß nach klein. Geben Sie dem eigentlichen Geschäftsentwicklungsingenieur die Macht und lassen Sie ihn entscheiden, wie er damit umgeht. Diese Idee ähnelt der, mit der wir normalerweise in Kontakt kommen. Sie ist anders und etwas ungewohnt, aber diese Art des Denkens kann im asynchronen Bereich besonders vorteilhaft sein Ich weiß nicht, ob mein Verständnis richtig ist. Der folgende Beispielcode ist ein typischer Anwendungsfall von Rückrufen:
function doSomething(callback){
  callback(1,2);
}
function numberAdd(a,b){
  document.write(a+b);
}
doSomething(numberAdd);//3
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonBeispielerklärung für Abschlüsse und Rückrufe in JavaScript. 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