Heim Web-Frontend js-Tutorial Wie deklariere ich den Gültigkeitsbereich einer JS-Variablen? Detaillierte Erläuterung von Scope-Beispielen innerhalb von Funktionen

Wie deklariere ich den Gültigkeitsbereich einer JS-Variablen? Detaillierte Erläuterung von Scope-Beispielen innerhalb von Funktionen

Jul 18, 2017 am 10:50 AM
javascript 作用域 变量

Der Umfang einer Variablen bezieht sich auf die Sichtbarkeit der Variablen, während der Lebenszyklus (Überlebenszeitraum) die Variable aus einer anderen Perspektive untersucht.

Der Umfang der Variablen in JS ist in globale Variablen und lokale Variablen unterteilt. Die innerhalb der Funktion definierten Variablen werden als lokale Variablen bezeichnet, und die außerhalb der Funktion definierten Variablen werden als globale Variablen bezeichnet. („Dinge außerhalb einer Funktion werden globale Variablen genannt“ sind relativ. Die hier diskutierte Prämisse ist, dass Variablen explizit mit var deklariert werden. Variablen, die innerhalb einer Funktion ohne var definiert werden, sind standardmäßig globale Variablen. Natürlich ist die Deklaration von Variablen ohne var verpönt. ).

var glob = 4;//函数外声明全局变量 
function fun() { 
    var height = 20; //函数内用var声明的是局部变量 
    weight = 50; //函数内不用var声明的是全局变量 
} 
fun(); 
alert(weight);
Nach dem Login kopieren

In JS gibt es keinen Bereich auf Blockebene, das heißt, er ist in geschweifte Klammern {} eingeschlossen. Gibt es in Java. Schreiben Sie den folgenden Code in die Hauptmethode

public static void main(String... args) { 
  for(int i=0;i<5;i++) { 
  } 
    { 
        int j=10; 
    } 
    int z = 20; 
    System.out.println(i); // i不可见,语法分析时报错,即编译不通过 
    System.out.println(j); // j不可见,语法分析时报错,即编译不通过 
    System.out.println(z); // z可见,输出20 
}
Nach dem Login kopieren

, aber wenn dies in JS

for(var i=0;i<5;i++) { 
} 
var obj = {name:"Lily"}; 
for(var attr in obj) { 
} 
{ 
  var j=10; 
} 
alert(i);//输出4,没有块级作用域 
alert(attr); //输出name,没有块级作用域 
alert(j);//输出10,没有块级作用域
Nach dem Login kopieren

auch ein Problem darstellt, vermeiden Sie die Verwendung einer for-Schleife im globalen Bereich und deklarieren Sie Variablen am Gleichzeitig führt dies andernfalls zu einer Verschmutzung des globalen Namensbereichs.

Natürlich hat JS1.7 das Schlüsselwort let zum Deklarieren von Variablen vorgeschlagen, das nur für den Bereich der for-Anweisung gilt.

for(let i=0;i<5;i++) { 
   //todo 
} 
alert(i);//运行时报错,提示i未定义
Nach dem Login kopieren

Beispiel für den Umfang von Variablen in einer JS-Funktion:

<html>
<head>
</head>
<body>
<script type="text/javascript">
var a = 5;
var c = 3;
function t(){
 var a = 6;
 var b = 10;
 document.write(a+'-----'+b);
 document.write(c);
}
t();
</script>
</body>
</html>
Nach dem Login kopieren

Anders als PHP: Wenn Sie eine Variable in einer JS-Funktion aufrufen möchten, sucht diese zunächst innerhalb der Funktion. Im Beispiel ist a gleich 6, aber c kann nicht im Funktionskörper gefunden werden. Wenn es gefunden wird, wird es aufgerufen wird einen Fehler melden.

Das obige ist der detaillierte Inhalt vonWie deklariere ich den Gültigkeitsbereich einer JS-Variablen? Detaillierte Erläuterung von Scope-Beispielen innerhalb von Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verwendung der Typedef-Struktur in der C-Sprache Verwendung der Typedef-Struktur in der C-Sprache May 09, 2024 am 10:15 AM

Verwendung der Typedef-Struktur in der C-Sprache

So lösen Sie die in Java erwartete Variable So lösen Sie die in Java erwartete Variable May 07, 2024 am 02:48 AM

So lösen Sie die in Java erwartete Variable

Vor- und Nachteile von Verschlüssen in js Vor- und Nachteile von Verschlüssen in js May 10, 2024 am 04:39 AM

Vor- und Nachteile von Verschlüssen in js

Was bedeutet include in c++? Was bedeutet include in c++? May 09, 2024 am 01:45 AM

Was bedeutet include in c++?

C++-Smartpointer: eine umfassende Analyse ihres Lebenszyklus C++-Smartpointer: eine umfassende Analyse ihres Lebenszyklus May 09, 2024 am 11:06 AM

C++-Smartpointer: eine umfassende Analyse ihres Lebenszyklus

Es gibt mehrere Situationen, auf die dies in js hinweist Es gibt mehrere Situationen, auf die dies in js hinweist May 06, 2024 pm 02:03 PM

Es gibt mehrere Situationen, auf die dies in js hinweist

Können die Definition und der Aufruf von Funktionen in C++ verschachtelt werden? Können die Definition und der Aufruf von Funktionen in C++ verschachtelt werden? May 06, 2024 pm 06:36 PM

Können die Definition und der Aufruf von Funktionen in C++ verschachtelt werden?

Der Unterschied zwischen let und var in vue Der Unterschied zwischen let und var in vue May 08, 2024 pm 04:21 PM

Der Unterschied zwischen let und var in vue

See all articles