Heim > Artikel > Web-Frontend > Beispielerklärung zum Umfang und Funktionsabschluss in js
In diesem Artikel werden hauptsächlich Beispiele für den Bereich und den Funktionsabschluss in js vorgestellt. Der Bereich ist sehr einfach, nur ein einfacher Klick. Der Bereich von js hat keinen Gültigkeitsbereich auf Blockebene, sondern nur einen globalen Bereich und einen Funktionsbereich 🎜>
Zum Beispiel:if(true){ var a=100; } console.log(a);In Java oder C liegen die geschweiften Klammern außerhalb des Blocks und können nicht abgerufen werden, in js ist dies jedoch möglich, was
var a; if(true){ a=100; }
Sonderfall:
Das a hier kann auch erhalten werden, wenn die Variable direkt ohne var innerhalb der Funktion deklariert wird, wird der übergeordnete Bereich auch als Bereich betrachtet, jedoch nicht Es wird empfohlen, so zu schreiben. Im Allgemeinen müssen Sie die Definition deklarieren.function Loga(){ a=100 } console.log(a);
Das wörtliche Verständnis des Funktionsbereichs besteht darin, dass innerhalb der Funktion definierte Variablen innerhalb der Funktion funktionieren.
Der Unterschied zwischen Funktionsbereich und globalem Bereich besteht darin, dass der globale Bereich innerhalb des Funktionsbereichs aufgerufen werden kann Variablen im Bereich und ändern Sie sie, aber der globale Bereich kann keine im Funktionsbereich definierten Variablen aufrufen. Die Definition hier ist sehr wichtig (unabhängig davon, ob sie geändert wird). Dies bedeutet, dass Variablen auf Variablen im übergeordneten Bereich zugreifen können Der Umfang wiederum ist für den Laien von innen nach außen zugänglich, aber nicht von außen nach innen.
2. Schließung
Es gibt keine genaue Definition des Konzepts der Schließung.
a. Funktion als Rückgabewert
b. Funktionen werden als Parameter übergebenBeispiel:function F1(){ var a=100 return function(){ console.log(a);//a是自由变量 } } var a=200; var f=F1(); f();Dies ist ein typischer Abschlussfall, der Rückgabewert f ist eine Funktion, ausführen Die Umgebung ist global, aber die generierte Umgebung befindet sich hier in F1, daher ist die Ausgabe hier eine freie Variable, die im übergeordneten Bereich gesucht werden muss, also F1.Zweitens wird die Funktion als Parameter übergeben
Das Ergebnis ist offensichtlich das gleiche wie oben. Die Ausführungsumgebung ist F2, aber die Generierungsumgebung ist F1 und der übergeordnete Bereich ist F1, daher ist die Ausgabe immer noch 100.
function F1(){ var a=100 return function(){ console.log(a); } } var a=200; var f=F1(); function F2(fn){ var a=300; fn(); } F2(f);
Verwandte Empfehlungen:
Scope-Kette und Prototyp-Kette und prototypische Vererbung in js
JS-Bereichskette und Abschluss Paketinstanzfreigabe
Detaillierte Erläuterung des JavaScript-Bereichs und -Abschlusses
Das obige ist der detaillierte Inhalt vonBeispielerklärung zum Umfang und Funktionsabschluss in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!