Scope ist eines der wichtigsten Konzepte von JavaScript. Wenn Sie JavaScript gut lernen möchten, müssen Sie die Arbeitsprinzipien der JavaScript -Bereichs- und Umfangskette verstehen. Der heutige Artikel enthält eine detaillierte Erklärung von Beispielen für JavaScript -Bereiche, in der Hoffnung, dass JavaScript besser lernen kann.
Jede Programmiersprache hat das Konzept des Umfangs. Einfach ausgedrückt ist Geltungsbereich der zugängliche Umfang von Variablen und Funktionen, dh Umfang kontrolliert den Sichtbarkeit und den Lebenszyklus von Variablen und Funktionen. In JavaScript ist der Umfang der Variablen global und lokal.
1. Kein Umfang auf Blockebene in JavaScript
In Java oder C#gibt es einen Umfang auf Blockebene, dh auch die Zahnspangen sind auch ein Umfang.
public static void main () {if (1 == 1) {String name = "sieben";} system.out.println (name);} // einen Fehler public static void main () {if (1 == 1) {String name = "sieben";} console.writeline (name);Kein Bereich auf Blockebene in JavaScript
Funktion main () {if (1 == 1) {var name = 'sieben';} console.log (name);} // Ausgabe: sieben2. JavaScript übernimmt den Funktionsumfang
In JavaScript wirkt jede Funktion als Umfang, und Variablen im internen Bereich können nicht extern zugegriffen werden.
Funktion main () {var InnerValue = 'sieben';} main (); console.log (innerValue); // Fehler: Unbefugter ReferenzError: Innervalue ist nicht definiert3. JavaScript -Bereichskette
Da jede Funktion in JavaScript ein Zielfernrohr ist, erscheint bei einer abgewandten Funktion eine Bereichskette.
xo = 'Alex'; Funktion func () {var xo = "sieben"; Funktion inner () {var xo = 'alvin'; console.log (xo);} inner ();} func ();Beispielsweise erscheint der obige Code in der Scope -Kette, die aus drei Scopes besteht. Wenn die Bereichskette angezeigt wird, wird die Bestellung angezeigt, wenn nach Variablen gesucht. Für das obige Beispiel:
Wenn Console.log (XO) ausgeführt wird, besteht die Suchreihenfolge, von innen nach außen nach Priorität der Bereichskette zu suchen. Wenn die innere Schicht nicht vorhanden ist, wird nach und nach nachgeschaut, bis keine Ausnahme gefunden wird.
4. Die Scope -Kette von Javascript wurde vor der Ausführung erstellt
Der Umfang von JavaScript wurde erstellt, bevor es ausgeführt wird. Wenn es in Zukunft ausgeführt wird, müssen Sie nur nach der Bereichskette suchen.
Beispiel 1:
xo = 'Alex'; Funktion func () {var xo = "sieben"; Funktion inner () {console.log (xo);} return inner;} var ret = func (); ret (); // Ausgabeergebnis: siebenDer obige Code existiert bereits, bevor die Funktion aufgerufen wird:
• Globaler Bereich-> Func-Funktionsumfang-> Innere Funktionsumfang
Bei der Ausführung von [ret ();] wurde die Umfangskette dieser Funktion definiert als: Global Scope -> Func -Funktionsumfang -> innere Funktionsumfang. Bei der Ausführung von [ret ();] werden Variablen basierend auf der vorhandenen Bereichskette gefunden.
Beispiel 2:
xo = 'Alex'; Funktion func () {var xo = "eirc"; function Inner () {console.log (xo);} xo = 'sieben'; return inner;} var ret = func ();Der obige Code hat den gleichen Zweck wie Beispiel 1 und betont auch, dass die Bereichskette bereits vorhanden ist, bevor die Funktion aufgerufen wird:
• Globaler Bereich-> Func-Funktionsumfang-> Innere Funktionsumfang
Bei der Ausführung von [var ret = func ();] wurde der Wert der XO -Variablen im Func -Bereich auf "sieben" von "Eric" zurückgesetzt. Bei der Ausführung von [ret (); später können Sie später nur "sieben" finden.
Beispiel 3:
xo = 'Alex'; <br> Funktions bar () {console.log (xo);} Funktion func () {var xo = "sieben"; return bar;} var ret = func (); ret (); // Ausgabeergebnis: AlexIm obigen Code wurden zwei Zielfernrohrketten erstellt, bevor die Funktion ausgeführt wird:
• globaler Bereichsumfangsumfangsumfang
• Globaler Bereich-Func-Funktionsumfang
Bei der Ausführung von [Ret ();] bezieht sich RET auf die Balkenfunktion, und die Umfangskette der Balkenfunktion besteht bereits: Global Teller -> Balkenfunktion Umfang.
5. Erklärung im Voraus
Wenn Sie keine Variablen erstellen und sie direkt in JavaScript verwenden, wird ein Fehler gemeldet:
console.log (xxoo); // error: Uncornt ReferenceError: xxoo ist nicht definiert
Wenn in JavaScript ein Wert erstellt wird, ohne einen Wert zuzuweisen, ist der Wert undefiniert, wie beispielsweise:
var xxoo; console.log (xxoo); // Ausgabe: undefiniert
Wenn dies in der Funktion geschrieben ist:
Funktion foo () {console.log (xo); var xo = 'sieben';} foo (); // Ausgabe: undefiniertDer obige Code meldet keinen Fehler, gibt jedoch undefined aus. Der Grund dafür ist, dass JavaScript -Funktionen, bevor sie ausgeführt werden, alle Variablen in ihnen deklarieren, ohne Werte zuzuweisen. Daher entspricht es dem obigen Beispiel, dass die Funktion Var XO bereits ausgeführt hat, wenn "vorkompiliert" wird. Die Ausgabe des obigen Codes ist also undefiniert.
Das obige ist eine detaillierte Erklärung des vom Editor eingeführten JavaScript -Bereichsprobe. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!