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. ).
Kopieren Sie den Codecode wie folgt:
var glob = 4; //Globale Variablen außerhalb der Funktion deklarieren
Funktion fun() {
var height = 20; //Die var-Deklaration in der Funktion ist eine lokale Variable
Weight = 50; //Die in der Funktion ohne Variable deklarierten sind globale Variablen
}
Spaß();
Alert(Gewicht);
In JS gibt es keinen Bereich auf Blockebene, der in geschweifte Klammern {} eingeschlossen ist. Gibt es in Java. Schreiben Sie den folgenden Code in die Hauptmethode
Kopieren Sie den Codecode wie folgt:
public static void main(String... args) {
for(int i=0;i<5;i++) {
}
{
int j=10;
}
int z = 20;
System.out.println(i); // i ist nicht sichtbar, bei der Syntaxanalyse wird ein Fehler gemeldet, d. h. die Kompilierung wird nicht bestanden
System.out.println(j); // j ist nicht sichtbar und während der Syntaxanalyse wird ein Fehler gemeldet, d. h. die Kompilierung wird nicht bestanden.
System.out.println(z); // z ist sichtbar, Ausgabe 20
}
Aber wenn in JS
Kopieren Sie den Codecode wie folgt:
for(var i=0;i<5;i++) {
}
var obj = {name:"Lily"};
for(var attr in obj) {
}
{
var j=10;
}
alarm(i);//Ausgabe 4, kein Bereich auf Blockebene
Alert(attr); //Ausgabename, kein Gültigkeitsbereich auf Blockebene
alarm(j);//Ausgabe 10, kein Bereich auf Blockebene
Dies veranschaulicht auch ein Problem. Vermeiden Sie die Verwendung von for-Schleifen beim Deklarieren von Variablen im globalen Bereich, da dies sonst zu einer Verschmutzung des globalen Namensbereichs führt.
Natürlich hat JS1.7 das Schlüsselwort let zum Deklarieren von Variablen vorgeschlagen (siehe https://developer.mozilla.org/cn/New_in_JavaScript_1.7), das nur für den Bereich der for-Anweisung gilt.
Kopieren Sie den Codecode wie folgt:
for(let i=0;i<5;i++) {
//todo
}
Alert(i);// Beim Ausführen tritt ein Fehler auf, der darauf hinweist, dass i nicht definiert ist
JS1.7 muss wie folgt referenziert werden: <script type="application/javascript;version=1.7"/></script>
PS: Firefox2+ implementiert JS1.7