Heim  >  Artikel  >  Web-Frontend  >  Was nützt der js-Verschluss? Anwendungsbeispiele für den js-Abschluss (mit Code)

Was nützt der js-Verschluss? Anwendungsbeispiele für den js-Abschluss (mit Code)

不言
不言Original
2018-08-23 11:38:341437Durchsuche

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-Abschluss und Prototyp

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!

Stellungnahme:
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