Heim  >  Artikel  >  Web-Frontend  >  Beispielerklärung zum Umfang und Funktionsabschluss in js

Beispielerklärung zum Umfang und Funktionsabschluss in js

小云云
小云云Original
2018-03-07 10:58:481635Durchsuche

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


Das a hier ist der globale Bereich; alle außerhalb der Funktion definierten Variablen sind der globale Bereich.
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 übergeben

Beispiel:

  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!

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
Vorheriger Artikel:js-AusführungssequenzanalyseNächster Artikel:js-Ausführungssequenzanalyse