1. Die Bereichskette von JavaScript-Funktionen ist in die Bereichskette zur Definitionszeit und die Bereichskette zur Laufzeit unterteilt.
2. Wenn eine Funktion definiert ist, verfügt sie über ein Attribut [[scope]], das ihre Definitionsbereichskette [[scope]] angibt. Die Definitionsbereichskette [[scope]] einer Funktion ist immer der Ausführungsbereichskette der externen Funktion, in der sie sich befindet;
3. Die Definitionsbereichskette der globalen Funktion enthält nur die Attribute des Fensters.
4. Wenn eine Funktion ausgeführt wird, wird die Bereichskette beim Definieren immer an der Spitze der Bereichskette in das aktuell aktive Objekt verschoben (sie enthält dieses, Argumente, Parameter und lokale Variablen);
5. Wenn eine Funktion ausgeführt wird, wird die Variablenadressierung immer von der Spitze der Bereichskette nach unten durchsucht, daher ist die Adressierungsgeschwindigkeit globaler Variablen am langsamsten;
6. Wenn die interne Funktion ausgeführt wird, kann er weiterhin auf deren vollständige Gültigkeitsbereichskette zugreifen. Aus diesem Grund können Abschlüsse zur Laufzeit auf Variablen zugreifen, die durch abgeschlossene externe Funktionen definiert werden.
7. Wenn während der Funktionsausführung eine with-Anweisung auftritt, werden alle Attribute des mit angegebenen Objekts vorübergehend an die Spitze der Bereichskette verschoben.
8. Wenn die Funktionsausführung auf einen Catch stößt, wird das durch Catch angegebene Fehlerobjekt vorübergehend als oberstes Ende der Scope-Kette an den Anfang der Scope-Kette verschoben.
Lassen Sie uns ein Beispiel geben und die Umfangskette zeichnen, um das Verständnis zu vertiefen:
Es gibt so einen Code:
Kopieren Sie den Codecode wie folgt:
Funktion „assignEvents(){“
var id = "xdi9592";
document.getElementById("save-btn").onclick = function(event){
saveDocument(id);
};
}
Rufen Sie den von dieser Funktion generierten anonymen Abschluss auf und zeichnen Sie die folgende Abbildung, um die Bereichskette bei der Ausführung von „assignEvent“ und die Bereichskette bei der Definition von „Closure“ anzuzeigen: