Heim > Web-Frontend > js-Tutorial > Eingehende Analyse des Variablenumfangs in JS

Eingehende Analyse des Variablenumfangs in JS

小云云
Freigeben: 2018-03-08 15:43:30
Original
1300 Leute haben es durchsucht


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.

Globale Variablen

最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的:
    var n=10;
  function f1(){
    console.log(n);
  }
  f1(); // 输出10,说明全局变量n在函数内部被读取
Nach dem Login kopieren

Lokale Variablen

局部变量:在函数内部声明的变量。函数内部的变量,外部无法读取。
 function f1(){
    var n=10;
  }
  console.log(n); // 没有定义,说明函数内部的变量,外部无法读取。
Nach dem Login kopieren

Bereich in ES5

for(var i =0;i<10;i++){

}
console.log(i)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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;
})();
Nach dem Login kopieren

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;
})();
Nach dem Login kopieren

Jetzt verstehen Sie, was Variablenförderung bedeutet. Tatsächlich bedeutet es, die Deklaration in den Vordergrund zu rücken, sodass die Ausgabe undefiniert ist >

Ausgabe a ist hier nicht definiert und mit let deklarierte Variablen können in der Deklaration nicht verwendet werden.

for(let i=0;i<10;i++){
}console.log(a)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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(&#39;window&#39;, a);// window undefined
console.log(&#39;window&#39;, b);// window 0
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage