Heim >Web-Frontend >js-Tutorial >Eine kurze Erläuterung des Funktionsumfangs und des Umfangs auf Blockebene in JavaScript
Dieser Artikel stellt Ihnen eine kurze Erläuterung des Funktionsumfangs und des Blockebenenumfangs in JavaScript vor. Ich hoffe, dass er für Sie hilfreich ist.
Schauen wir uns zuerst einen Code an
var a = true; function hoisting(){ if(!a){ var a = 2; } console.log(a) } hoisting(); // 最终结果:2
Die Logik dieses Codes ist
sucht zunächst nach Variablen im aktuellen 函数域
.
Wenn er vorhanden ist, deklarieren Sie zuerst den Variablenheader. Wenn er nicht vorhanden ist, suchen Sie
erneut vom übergeordneten Element aus, bis er gefunden wird.
Dann können wir es wie folgt umschreiben:
var a; // 变量声明 a = true; // 变量定义 function hoisting(){ var a; // 变量声明 if(!a){ a = 2; //变量定义 } console.log(a) // 先从自身函数域开始查找,找不到再去父作用域 } hoisting();
Javascript-Variablen existieren mit Funktionen als Gültigkeitsbereich, und wenn sie lokal nicht gefunden werden können, werden sie auf der übergeordneten Ebene gesucht, um sie zu finden ihnen.
Es hat möglicherweise nicht viel mit diesem Artikel zu tun ~~, die Hauptsache ist, dass Schließung eine neue Funktionsdomäne erstellt.
Sofort aufgerufener Funktionsausdruck
Seine Funktion besteht darin, der Variablen einen Wert zuzuweisen, bevor sie aufgerufen wird
var a = (function(){ var a = 3 return a }())
Die Hauptfunktion von let und const besteht darin, den ursprünglichen Funktionsbereich von JavaScript an den Bereich auf Blockebene anzupassen
let a = 2; function block(){ if(!a){ let a =1 } console.log(a) } block() // 2
Zu diesem Zeitpunkt ist der Funktionsumfang unterteilt Kleiner, auf Blockebene.
Wir können den Code in drei Blöcke unterteilen
if-Block
Blockblock
Fensterblock
Okay, was passiert nun, wenn wir die Funktion neu schreiben?
let a = 0; function block(){ if(!a){ let a =1 } console.log(a) } block() // 0
Das Endergebnis ist 0, wenn a im Strom nicht gefunden werden kann Block Manchmal geht es zur Suche zum übergeordneten Block und der Endwert ist 0
Und die Variablen im if-Block sind nur innerhalb des Blocks gültig
Empfohlene verwandte Artikel:
JS-objektorientierte gekapselte Analyse in der Programmierung
Wie heißt die selbstaufrufende anonyme Funktion von jQuery?Das obige ist der detaillierte Inhalt vonEine kurze Erläuterung des Funktionsumfangs und des Umfangs auf Blockebene in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!