Heim >Web-Frontend >js-Tutorial >So verstehen Sie JavaScript-Variablentypen und Variablenbereiche besser
Typ der Variablen
Javascript unterscheidet sich von Sprachen wie Java und C. Es ist eine untypisierte und schwach erkannte Sprache. Für die Definition von Variablen ist keine Deklaration des Variablentyps erforderlich. Durch Zuweisung können wir derselben Variablen verschiedene Datentypen zuweisen. Zum Beispiel:
i=100;//Number类型 i="variable";//String类型 i={x:4};//Object类型 i=[1,2,3];//Array类型
Obwohl diese Funktion von JS unsere Codierung flexibler macht, bringt sie auch einen Nachteil mit sich, der dem Debuggen nicht förderlich ist. Die schwache Erkennung des Compilers macht es für uns ziemlich mühsam, langen Code zu verwalten . .
Globale Variablen und lokale Variablen
Wenn der JS-Parser ausgeführt wird, erstellt er zunächst ein globales Objekt in der Ausführungsumgebung und die von uns definierten globalen Eigenschaften werden als Objekte verwendet Beim Lesen der Eigenschaft können wir im Code der obersten Ebene mit dem Schlüsselwort this und dem Fensterobjekt darauf zugreifen. Die lokalen Variablen im Funktionskörper sind nur im aufrufenden Objekt vorhanden, das bei Ausführung der Funktion generiert wird. Die lokalen Variablen werden sofort zerstört, wenn die Funktion ausgeführt wird. Daher müssen wir bei der Programmierung darüber nachdenken, wie Variablen sinnvoll deklariert werden, was nicht nur unnötigen Speicheraufwand reduziert, sondern auch die Debugging-Probleme, die durch wiederholte Definitionen von Variablen und das Überschreiben zuvor definierter Variablen verursacht werden, weitgehend vermeidet.
Variablenumfang
Der Umfang von Variablen ist ein kritisches Detail in jeder Programmiersprache. Der Umfang von Variablen in JS ist im Vergleich zu Sprachen wie JAVA und C relativ frei. Ein großes Merkmal ist, dass JS-Variablen keinen Gültigkeitsbereich auf Blockebene haben. Die Variablen in der Funktion sind in der gesamten Funktion gültig der folgende Code:
<SCRIPT LANGUAGE="JavaScript" type="text/javascript"> //定义一个输出函数 function outPut(s){ document.writeln(s) } //全局变量 var i=0; //定义外部函数 function outer(){ //访问全局变量 outPut(i); // 0 //定义一个类部函数 function inner(){ //定义局部变量 var i = 1; // i=1; 如果用隐式申明 那么就覆盖了全局变量i outPut(i); //1 } inner(); outPut(i); //0 } outer(); </SCRIPT>
Das Ausgabeergebnis ist 0 1 0. Aus dem Obigen kann bewiesen werden, dass, wenn JS var verwendet, um eine Variable im Funktionskörper zu deklarieren, diese Variable nur vorhanden ist gültig im Funktionskörper. Wenn die Funktion endet, kann die lokale Variable zerstört werden.
Aufgrund der oben genannten JS-Funktionen gibt es ein weiteres wichtiges Problem, das Aufmerksamkeit erfordert. ActionScript wurde bereits zuvor verwendet. Obwohl es und JS beide auf dem ECMA-Standard basieren, unterscheidet es sich hier geringfügig. Beispielsweise der folgende Code:
<SCRIPT LANGUAGE="JavaScript" type="text/javascript"> //定义一个输出函数 function outPut(s){ document.writeln(s) } //全局变量 var i=0; //定义外部函数 function outer(){ //访问全局变量 outPut(i); // 0 //定义一个类部函数 function inner(){ outPut(i); //undefiend var i=1; outPut(i); //1 } inner(); outPut(i); //0 } outer(); </SCRIPT>
JS-Variablenbereich
<script language ="javascript" type ="text/javascript" > var a = "change"; function fun() { alert(a);//输出undefined var a = "改变了"; alert(a);//输出改变了 } alert(a);//输出change fun(); </script>
var definiert eine Variable im Bereich, bevor a zum ersten Mal ausgegeben wird JS hat der Änderung in der Analyse vor der Kompilierung eine zugewiesen, sodass die Änderung zum ersten Mal ausgegeben wird. Wenn die Funktion fun() aufgerufen wird, erstellt JS einen neuen Bereich und initialisiert die Werte aller var-Variablen, bevor a ausgegeben wird. ist undefiniert, daher ist die erste Ausgabe in fun() undefiniert und der zweiten Ausgabe wurde bereits ein Wert zugewiesen, sodass die beiden a zwei verschiedene Variablen innerhalb und außerhalb der Funktion sind, wie zum Beispiel:
<script language ="javascript" type ="text/javascript" > var b; function fun() { b = "change"; } alert(b);//输出undefined </script>
Variable b wurde außerhalb der Funktion definiert, aber die Ausgabe ist undefiniert.
Das obige ist der detaillierte Inhalt vonSo verstehen Sie JavaScript-Variablentypen und Variablenbereiche besser. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!