Heim  >  Artikel  >  Web-Frontend  >  Zusammenfassung der js-Abschlussbeispiele_Grundkenntnisse

Zusammenfassung der js-Abschlussbeispiele_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:31:461577Durchsuche

Js-Abschluss
Wissenswertes vor der Schließung
1. Funktionsumfang
(1) Das Besondere an Js Sprache ist, dass globale Variablen direkt innerhalb der Funktion

gelesen werden können

Code kopieren Der Code lautet wie folgt:


Wenn in PHP

Code kopieren Der Code lautet wie folgt:

$n=100;
Funktion parent(){
echo $n;
}
parent();//meldet einen Fehler n ist undefiniert
?>

(2). Lokale Variablen innerhalb der Funktion können nicht außerhalb der Funktion gelesen werden

Code kopieren Der Code lautet wie folgt:


Beachten Sie, dass var hinzugefügt werden muss, wenn Variablen innerhalb einer Funktion deklariert werden, andernfalls wird eine globale Variable deklariert

Code kopieren Der Code lautet wie folgt:

Funktion parent(){
m=50;
}
parent();
alarm(m);//50

//Natürlich gilt das in PHP noch mehr,

Code kopieren Der Code lautet wie folgt:

Funktion parent(){
global $m;//global, Definition und Zuweisung sollten getrennt werden
$m=50;
}
parent();
echo $m;//50
?>
//Wenn kein globaler Fehler vorhanden ist, wird trotzdem ein undefinierter Fehler gemeldet

Manchmal müssen Sie, wenn Sie die lokalen Variablen innerhalb der Funktion abrufen müssen, die Eigenschaften des js-Variablenbereichs auf flexible Weise nutzen, z. B. indem Sie eine Unterfunktion innerhalb der Funktion definieren Die übergeordnete Funktion ist global und die untergeordneten Funktionen können auf Variablen in der übergeordneten Funktion zugreifen (die lokale Variablen für den gesamten JS-Code sind)

Code kopieren Der Code lautet wie folgt:


Alle lokalen Variablen innerhalb von Parent sind für seine untergeordneten Funktionen sichtbar, aber lokale Variablen innerhalb seiner untergeordneten Funktionen sind für seine übergeordnete Funktion nicht sichtbar. Dies ist die einzigartige Kettenbereichsstruktur von js. Untergeordnete Objekte durchsuchen alle Variablen des übergeordneten Elements Alle Variablen des übergeordneten Objekts sind für die untergeordneten Objekte sichtbar, und das Gegenteil ist nicht der Fall! Die obige Sohnfunktion ist ein Abschluss
Manchen Schülern geht es vielleicht so

Code kopieren Der Code lautet wie folgt:

Funktion parent(){
var m=50;
Funktion son(){
alarm(m);
}
}
parent();
son()//Meldefunktion son ist undefiniert

Beachten Sie, dass in JavaScript in Funktionen deklarierte Funktionen lokal sind und freigegeben werden, nachdem die Ausführung der Funktion abgeschlossen ist
Beachten Sie den Unterschied zwischen diesem und PHP

Code kopieren Der Code lautet wie folgt:

Funktion parent(){
Funktion son(){
$m=50;
echo $m;
}
}
parent();
son();//Ausgabe 50 und es wird kein Fehler gemeldet
?>

Schließung

Definieren Sie die Funktion innerhalb der Funktion, die Brücke, die das Innere und Äußere der Funktion verbindet
Der Verschluss hat zwei Funktionen:
Eine davon ist das zuvor erwähnte Lesen von Variablen innerhalb der Funktion,
Die zweite besteht darin, die Werte dieser Variablen im Speicher zu speichern, um einen Datenaustausch zu erreichen
Hier ein paar Beispiele für Verschlüsse

Code kopieren Der Code lautet wie folgt:


Das Ausführungsergebnis der anonymen Funktion (dh die Deklaration der inneren Unterfunktion wird der globalen Variablen cut zugewiesen) wird im Speicher gespeichert
Beim Ausführen von cut() wird der Wert direkt aus dem Speicher abgerufen. Nur die Funktion cnt() kann i aufrufen, und direktes Alert(i) funktioniert nicht
Sie können auch Parameter in den Abschluss

übergeben

Code kopieren Der Code lautet wie folgt:

var cnt=(function(num){
Rückgabefunktion(){
alarm(num);
num ;
}
})(5);
cnt();//5
cnt();//6
cnt();//7
//Natürlich können Sie beim Aufruf auch Parameter übergeben
var cnt=(function(){
var i=0;
Rückgabefunktion(num){
num =i;
alarm(num);
ich ;
}
})();
cnt(1);//1
cnt(2);//3
cnt(3);//5

Um Schließungen besser zu verstehen, schauen wir uns den folgenden Code an
Zum Beispiel möchte ich ein Array zurückgeben. Es gibt 5 Funktionen im Array. Die erste Funktion erscheint 0, die zweite erscheint 1 ...
Wenn der Code so geschrieben ist

Code kopieren Der Code lautet wie folgt:

Funktionsbox(){
var arr=[];
for(i=0;i<5;i ){
arr=function(){return i;}
}
zurück arr;
}
var a=box();
Alert(a);//Array mit fünf Funktionskörpern
alarm(a[0]());
alarm(a[1]());

Popup-Funktionskörper
function(){return i;} }
Das letzte i ist 4 und dann wird es 5
Für Schleifenstopps
Es wurde festgestellt, dass 5 aufgetaucht sind, was offensichtlich nicht unseren Anforderungen entsprach

Lösung 1
Selbst-sofortige Ausführung von Funktionen im Inneren

Code kopieren Der Code lautet wie folgt:

Funktionsbox(){
var arr=[];
for(i=0;i<5;i ){
arr=(function(num){return i;})(i);
}
zurück arr;
}
var a=box();
for(var i=0;i alarm(a);
}

Aber wir haben festgestellt, dass die Elemente im zurückgegebenen Array das Ergebnis der Funktionsausführung sind, aber was wir wollen, ist, dass die Funktion unseren Code aktualisieren muss

Lösung 2
Abschlussimplementierung

Code kopieren Der Code lautet wie folgt:

Funktionsbox(){
var arr=[];
          for(var i=0;i<5;i){

arr=(function(num){
Rückgabefunktion(){return num;}
                  })(i);

}
Rückkehr arr; 
}

var arr=box();

for(var i=0;i<5;i ){

alarm(arr());//0,1,2,3,4
}

Schlüsselcode

Code kopieren Der Code lautet wie folgt:

arr=(function(num){
           return function(){return num;}
})(i);


Wenn i=0
arr[0]=(function(num){return function(){return num;}})(0);

1 Uhr


arr[1]=(function(num){return function(){return num;}})(1);

Das oben Genannte sind die Vorteile der Schließung! Es ist sehr einfach und praktisch.

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