Dieser Artikel zeigt Ihnen, wozu js-Verschlüsse dienen. Die Verwendungsbeispiele für den js-Abschluss (mit Code) haben einen gewissen Referenzwert. Ich hoffe, dass sie für Sie hilfreich sind.
JS-Sprache kann globale Variablen innerhalb der Funktion direkt lesen, aber lokale Variablen innerhalb der Funktion können nicht außerhalb der Funktion gelesen werden
<script type="text/javascript"> var n=100; function parent(){ alert(n); } parent();//100 </script> <script type="text/javascript"> function parent(){ var m=50; } parent(); alert(m);//报错 m未定义 </script>
Hinweis: Achten Sie darauf, var hinzuzufügen, wenn Sie Variablen innerhalb der Funktion deklarieren die Funktion, andernfalls wird eine globale Variable deklariert.
function parent(){ m=50; } parent(); alert(m);//50
Wenn Sie lokale Variablen innerhalb einer Funktion abrufen müssen, müssen Sie manchmal eine flexible Methode verwenden, um die Eigenschaften des js-Variablenbereichs zu nutzen, z. B. die Definition einer Unterfunktion innerhalb der Funktion Die Unterfunktion, die übergeordnete Funktion, ist global, untergeordnete Funktionen können auf Variablen in der übergeordneten Funktion zugreifen (die lokale Variablen für den gesamten js-Code sind).
<script type="text/javascript"> function parent(){ var m=50; function son(){ alert(m); } return son; } var s=parent();//将结果保存在全局里 s();//50 </script>
Alle lokalen Variablen innerhalb der übergeordneten Funktion sind für ihr untergeordnetes Element sichtbar Funktionen, aber ihre untergeordneten lokalen Variablen sind für ihre übergeordnete Funktion unsichtbar. Dies ist die einzigartige Kettenbereichsstruktur von js. Das untergeordnete Objekt sucht Ebene für Ebene nach allen Variablen des übergeordneten Objekts sind alle Unterobjekte sichtbar, aber das Gegenteil ist nicht der Fall! Die obige Sohnfunktion ist ein Abschluss.
Abschluss: Definieren Sie eine Funktion innerhalb einer Funktion. Eine Brücke, die das Innere und Äußere der Funktion verbindet, hat zwei Funktionen:
Eine ist Die Variablen innerhalb der zuvor erwähnten Lesefunktion
Die zweite besteht darin, die Werte dieser Variablen im Speicher zu speichern, um einen Datenaustausch zu erreichen
Im Folgenden finden Sie einige Beispiele für Abschlüsse
1. Anonyme Funktionen implementieren Abschlüsse:
<script type="text/javascript"> var cnt=(function(){ var i=0; return function(){ alert(i); i++; } })(); cnt();//0 cnt();//1 cnt();//2 cnt();//3
Weisen Sie das Ausführungsergebnis der anonymen Funktion (d. h. die Deklaration der inneren Unterfunktion) zu Die globale Variable „cut“) wird im Speicher gespeichert und der Wert wird direkt aus dem Speicher abgerufen, wenn „cut()“ ausgeführt wird. „i“ kann nur von der Funktion „cnt()“ aufgerufen werden und direktes „alert(i)“ funktioniert nicht.
2. Parameter in den Abschluss übergeben:
var cnt=(function(num){ return function(){ alert(num); num++; } })(5); cnt();//5 cnt();//6 cnt();//7 //当然还可以调用时传参 var cnt=(function(){ var i=0; return function(num){ num+=i; alert(num); i++; } })(); cnt(1);//1 cnt(2);//3 cnt(3);//5
Verwandte Empfehlungen:
JS-Schließung in einer Minute verstehen_Javascript-Kenntnisse
Das obige ist der detaillierte Inhalt vonWas nützt der js-Verschluss? Anwendungsbeispiele für den js-Abschluss (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!