Bevor wir uns mit dem Variablenbereich in JavaScript befassen, sollten wir einige Punkte klären:
•Der Variablenbereich von JavaScript basiert auf seiner einzigartigen Bereichskette.
•JavaScript hat keinen Geltungsbereich auf Blockebene.
•In einer Funktion deklarierte Variablen werden in der gesamten Funktion definiert.
1. JavaScript-Bereichskette
Schauen Sie sich zunächst den folgenden Code an:
Kopieren Sie den Codecode wie folgt:
<script type="text/javascript"> var rain = 1; function rainman(){ var innerVar = 4; //Inner-Funktion aufrufen } rainman(); //Rufen Sie die Rainman-Funktion auf</script>
Beachten Sie den Warncode(Regen);. JavaScript prüft zunächst, ob die Variable „Regen“ in der inneren Funktion definiert ist. Wenn die Variable „Regen“ in der inneren Funktion nicht definiert ist, prüft JavaScript weiterhin, ob die Variable „Regen“ vorhanden ist ist in der Rainman-Funktion definiert, daher sucht die JavaScript-Engine weiterhin nach (globalem Objekt), um zu sehen, ob rain im globalen Objekt definiert ist Definierter Regen = 1, daher wird als Endergebnis „1“ angezeigt.
Bereichskette: Wenn JavaScript eine Variable x abfragen muss, sucht es zuerst nach dem ersten Objekt in der Bereichskette. Wenn das erste Objekt keine Definition hat, wird die Suche fortgesetzt und so weiter.
Der obige Code umfasst drei Scope-Chain-Objekte in der Reihenfolge: inner, rainman und window.
2. Innerhalb des Funktionskörpers haben lokale Variablen eine höhere Priorität als globale Variablen mit demselben Namen.
Kopieren Sie den Codecode wie folgt:
<script type="text/javascript"> var rain = 1; //Definieren Sie die globale Variable „Regen“ check(){ var rain = 100; //Definieren Sie die lokale Variable „Regenwarnung“ (rain); hier } check (); alarm( rain ); //1 wird hier angezeigt</script>
3. JavaScript hat keinen Gültigkeitsbereich auf Blockebene.
Dies ist auch der Teil, in dem JavaScript flexibler ist als andere Sprachen.
Beobachten Sie den folgenden Code sorgfältig. Sie werden feststellen, dass die Bereiche der Variablen i, j und k gleich sind und im gesamten Regenfunktionskörper global sind.
Kopieren Sie den Codecode wie folgt:
<script type="text/javascript"> function rainman(){ // Es gibt drei lokale Variablen ijk im Rainman-Funktionskörper var i = 0; if ( 1 ) { var j = 0; k < 3; k++) { Alert( k ); //Pop up 0 </script>
4. Die in der Funktion deklarierten Variablen werden in der gesamten Funktion definiert.
Beachten Sie zunächst diesen Code:
Kopieren Sie den Codecode wie folgt:
<script type="text/javascript"> function rain(){ var x = 1; function man(){ x = 100 } man( //100 wird hier angezeigt). } rain(); //Regen aufrufen</script>
Der obige Code zeigt, dass die Variable x im gesamten Regenfunktionskörper verwendet und neu zugewiesen werden kann. Aufgrund dieser Regel werden „unglaubliche“ Ergebnisse erzielt. Beachten Sie den folgenden Code.
Kopieren Sie den Codecode wie folgt:
<script type="text/javascript"> var x = 1; function rain(){ alarm( x ); //Pop up 'undefiniert' statt 1 var x = 'rain-man'; /pop 'rain-man' } rain();</script>
Dies liegt daran, dass die lokale Variable x in der Funktion „rain“ im gesamten Funktionskörper definiert ist (var x = „rain-man“, deklariert), sodass die globale Variable x mit demselben Namen im gesamten Funktionskörper „rain“ ausgeblendet ist. Der Grund, warum hier „undefiniert“ angezeigt wird, liegt darin, dass bei der ersten Ausführung von „alert(x)“ die lokale Variable x noch nicht initialisiert wurde.
Die obige Regenfunktion entspricht also der folgenden Funktion:
Kopieren Sie den Codecode wie folgt:
function rain(){ var x; alarm( x ); x = 'rain-man';}
5. Variablen, die ohne Verwendung des Schlüsselworts var definiert werden, sind globale Variablen.
Kopieren Sie den Codecode wie folgt:
<script type="text/javascript"> function rain(){ x = 100; //Globale Variable x wird deklariert und zugewiesen} rain( //100 wird angezeigt </script>
Dies ist auch ein häufiger Fehler bei JavaScript-Neulingen, bei dem viele globale Variablen unbeabsichtigt zurückbleiben.
6. Globale Variablen sind alle Eigenschaften des Fensterobjekts.
Kopieren Sie den Codecode wie folgt:
<script type="text/javascript"> var x = 100; warning( window.x);//pop up 100 warning(x);</script>
Entspricht dem folgenden Code
Kopieren Sie den Codecode wie folgt:
<script type="text/javascript"> window.x = 100; warning( window.x ); Alert(x)</script>