Heim > Web-Frontend > js-Tutorial > JavaScript-Bereichskette Teil 1: Definition der Bereichskette

JavaScript-Bereichskette Teil 1: Definition der Bereichskette

黄舟
Freigeben: 2016-12-20 16:16:35
Original
1120 Leute haben es durchsucht

Die Daten eines Ausführungskontexts (Variablen, Funktionsdeklarationen und Funktionsparameter) werden als Eigenschaften im Variablenobjekt gespeichert. Das Variablenobjekt wird bei jedem Eintritt in den Kontext erstellt und mit einem Anfangswert gefüllt. Der Wert wird während der Codeausführungsphase aktualisiert.

Dieses Kapitel ist der Erörterung weiterer Details gewidmet, die in direktem Zusammenhang mit dem Ausführungskontext stehen. Dieses Mal werden wir ein Thema erwähnen – die Bereichskette.

Wenn Sie die wichtigsten Punkte kurz beschreiben und zeigen möchten, beziehen sich Scope-Ketten hauptsächlich auf innere Funktionen.

Wir wissen, dass ECMAScript die Erstellung interner Funktionen ermöglicht, und wir können diese Funktionen sogar von der übergeordneten Funktion zurückgeben.

var x = 10;
  
function foo() { 
  var y = 20; 
  function bar() {
    alert(x + y);
  } 
  return bar; 
}
  
foo()(); // 30
Nach dem Login kopieren

Auf diese Weise ist es offensichtlich, dass jeder Kontext sein eigenes Variablenobjekt hat: Für den globalen Kontext ist es das globale Objekt selbst, für Funktionen ist es das aktive Objekt.

Die Bereichskette ist lediglich die Liste aller Variablenobjekte (einschließlich übergeordneter Variablenobjekte) im inneren Kontext. Diese Kette wird für Variablenabfragen verwendet. Das heißt, im obigen Beispiel umfasst die Bereichskette des „bar“-Kontexts AO(bar), AO(foo) und VO(global).

Aber schauen wir uns dieses Problem genauer an.

Beginnen wir mit der Definition und besprechen wir die Beispiele genauer.

Eine Bereichskette ist einem Ausführungskontext zugeordnet, und die Kette von Variablenobjekten wird für die Variablensuche bei der Identifikatorauflösung verwendet.

Die Bereichskette des Funktionskontexts wird erstellt, wenn die Funktion aufgerufen wird, einschließlich des aktiven Objekts und des [[scope]]-Attributs innerhalb dieser Funktion. Im Folgenden werden wir das [[scope]]-Attribut einer Funktion ausführlicher besprechen.

wird im Kontext wie folgt dargestellt:

activeExecutionContext = {
    VO: {...}, // or AO
    this: thisValue,
    Scope: [ // Scope chain
      // 所有变量对象的列表
      // for identifiers lookup
    ]
};
Nach dem Login kopieren

Sein Geltungsbereich ist wie folgt definiert:

Scope = AO + [[Scope]]
Nach dem Login kopieren

Diesen Vereinigungs- und Identifikator-Auflösungsprozess werden wir weiter unten besprechen, Dies hängt mit dem Lebenszyklus der Funktion zusammen.

Das Obige ist der Inhalt der JavaScript-Bereichskette: Definition des Bereichskette: Inhalt der Bereichskette: Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn). !


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage