Heim >Web-Frontend >js-Tutorial >Eingehende Analyse des Variablenumfangs in JS
Es gibt zwei Bereiche von Variablen: globale Variablen und lokale Variablen. In diesem Artikel wird hauptsächlich eine ausführliche Analyse des Variablenbereichs in JS vorgestellt, in der Hoffnung, allen zu helfen.
最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的: var n=10; function f1(){ console.log(n); } f1(); // 输出10,说明全局变量n在函数内部被读取
局部变量:在函数内部声明的变量。函数内部的变量,外部无法读取。 function f1(){ var n=10; } console.log(n); // 没有定义,说明函数内部的变量,外部无法读取。
for(var i =0;i<10;i++){ } console.log(i)
js-Code, glauben Sie, dass er ausgegeben wird? Was? Die Antwort ist 10. In ES5 gibt es nur einen globalen Bereich und einen Funktionsbereich und keinen Blockbereich. Natürlich können wir die Funktion des Blockbereichs implementieren. Schauen Sie sich den folgenden Code an:
(function(){ for(var i =0;i<10;i++){ } })() console.log(i)
Die Antwort lautet 1. Diese Schreibweise wird als sofort aufgerufener Funktionsausdruck (IIFE) bezeichnet. Dadurch wird tatsächlich ein lokaler Bereich erstellt Es ist intern gültig und von außen nicht zugänglich. Der Vorteil dieser Schreibweise besteht darin, dass globale Variablen nicht verschmutzt werden.
Ich möchte hier noch etwas erwähnen: In ES5 ist die Deklaration von Variablen in ES5 nicht streng. Sie können a=10 direkt verwenden, um eine globale Variable zu deklarieren. Um wie folgt zu sein:
a=10;console.log(a)
Ausgabe 10, können Sie es verwenden, ohne eine Variable zu deklarieren. Der folgende Code wird ausgeführt:
var a=undefined;a=10;console.log(a)
Dann machen wir etwas Fortgeschritteneres, nämlich die variable Werbung. (Konzept in ES5, neue Verwendung in ES6 führt nicht zu einer Variablenheraufstufung), schauen Sie sich den Code an:
a=10; (function(){console.log(a)var a=1; })();
Was gibt der obige Code aus? Lassen Sie es uns analysieren:
var a=undefined; a=10; (function(){var a=undefined; console.log(a) a=1; })();
Jetzt verstehen Sie, was Variablenförderung bedeutet. Tatsächlich bedeutet es, die Deklaration in den Vordergrund zu rücken, sodass die Ausgabe undefiniert ist >
for(let i=0;i<10;i++){ }console.log(a)
gibt eine Ausgabe aus, die nicht definiert ist. Warum? Ruan Yifengs ES6 besagt, dass die von ihm deklarierten Variablen an diesen Bereich „binden“ und nicht mehr von externen Einflüssen beeinflusst werden, solange der let-Befehl im Bereich auf Blockebene existiert. ES6 legt klar fest, dass, wenn ein Block let- und const-Befehle enthält, die von diesen Befehlen in diesem Block deklarierten Variablen von Anfang an einen geschlossenen Bereich bilden. Jede Verwendung dieser Variablen vor der Deklaration führt zu einem Fehler.
a=3let a =10;alert(a)
Verwandte Empfehlungen:
var a, b; (function () { console.log(a);// undefined console.log(b);// undefined var a = b = 0;// (1) console.log(a);// 0 console.log(b);// 0 })(); console.log('window', a);// window undefined console.log('window', b);// window 0
Detaillierte Erläuterung des Include-Dateivariablenbereichs in PHP
Javascript-Variablenbereich, Speicher, DOM-Leck Detaillierte Erläuterung von Problembeispielen
Einführung in Beispiele für JavaScript-Variablenbereiche
Das obige ist der detaillierte Inhalt vonEingehende Analyse des Variablenumfangs in JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!