Heim  >  Artikel  >  Web-Frontend  >  Scope Chain, das Grundprinzip von JavaScript (ausführliche Erklärung mit Bildern und Text)

Scope Chain, das Grundprinzip von JavaScript (ausführliche Erklärung mit Bildern und Text)

WBOY
WBOYnach vorne
2022-01-19 17:53:561989Durchsuche

Dieser Artikel vermittelt Ihnen Wissen über die Bereichskette in JavaScript. Wir kennen oft nur diese Grundregel. Ich hoffe, es kann dir etwas helfen!

Scope Chain, das Grundprinzip von JavaScript (ausführliche Erklärung mit Bildern und Text)

Scope

1. Was ist Scope? Einfach ausgedrückt ist Scope (englisch: Scope) eine Reihe von Regeln zum Auffinden von Variablen anhand des Namens Dieser Raum ist geschlossen und hat keinen Einfluss auf den Außenraum. Der Außenraum hat jedoch keinen Zugriff auf den Außenraum, der ihn umschließt.

2. [[Scopes]] Attribute

In JavaScript gibt es einige Attribute im Objekt, auf die wir zugreifen können, und auf einige, auf die wir nicht frei zugreifen können, [[Scopes]] Eine davon ist die Eigenschaft, die nur von der JavaScript-Engine gelesen werden kann. Tatsächlich nennen wir [[scope]] oft Scope, in dem die Kontextsammlung der Scope-Laufzeit gespeichert wird.

Da func.prototype.constructor und func auf dieselbe Funktion verweisen, zeigen wir hier das Attribut [[Scopes]] an, indem wir auf das Prototypobjekt der Funktion func zugreifen

Scope Chain, das Grundprinzip von JavaScript (ausführliche Erklärung mit Bildern und Text)3 Eine Sammlung von Ausführungszeit-Kontextobjekten, die in

[[scope]] gespeichert sind. Diese Sammlung ist in einer Kette verbunden. Wir nennen diese Kettenverbindung eine Scope-Kette. JavaScript sucht nach Variablen über die Bereichskette. Die Suchmethode besteht darin, entlang der Oberseite der Bereichskette nach unten zu suchen (das Objekt wird innerhalb der Funktionsbereichskette durchsucht).

//以如下代码为例说明JavaScript通过作用域链查找变量的原理**
function a() {
  function b() {
      var b = 123;
  }
  var a = 123;
  b();
}
var glob = 100;
1. Wenn die globale Funktion a() definiert ist, lautet die Bereichskette wie folgt: Das Attribut [[Scopes]] der Funktion zeigt auf das Bereichskettenobjekt, die Bereichskette hat nur ein Schlüssel-Wert-Paar, das auf das globale Objekt verweist. Das globale Objekt speichert Dinge, auf die global zugegriffen werden kann, dh den äußersten Bereich, auf den jeder zugreifen kann.

2. Wenn die globale Funktion a() aktiviert und aufgerufen wird, sieht die Bereichskette wie folgt aus

Zu diesem Zeitpunkt kann die Bereichskette als Erstes auf das Schlüssel-Wert-Paar zugreifen Das Aktivierungsobjekt. Wenn es kein einziges Zugriffsobjekt gibt, ist die Gültigkeitskette von b wie folgt: Wenn b gerade definiert ist aber nicht aufgerufen, lautet die Gültigkeitskette von b wie folgt: a ist gleich4 Wenn Funktion b in Funktion a() aktiviert und aufgerufen wird, lautet die Gültigkeitskette wie folgt

Scope Chain, das Grundprinzip von JavaScript (ausführliche Erklärung mit Bildern und Text)

Die Die Bereichskette zeigt zuerst auf das Aktivierungsobjekt der Funktion b(). Der Zugriff auf die Suchvariablen erfolgt ebenfalls in der Reihenfolge der Bereichskette und stoppt, wenn sie gefunden wird5. Der Grund, warum der externe Bereich nicht zugreifen kann Der interne Bereich besteht darin, dass die Bereichskette des externen Bereichs nicht über das Aktivierungsobjekt des internen Bereichs verfügt, sodass auf interne Variablen nicht zugegriffen werden kann. Die Reihenfolge des Zugriffs auf Variablen in internen Bereichen richtet sich nach der Bereichskette Wenn nicht, suchen Sie nach außen entlang der Bereichskette.

Verwandte Empfehlungen: Scope Chain, das Grundprinzip von JavaScript (ausführliche Erklärung mit Bildern und Text)Javascript-Lernprogramm

Das obige ist der detaillierte Inhalt vonScope Chain, das Grundprinzip von JavaScript (ausführliche Erklärung mit Bildern und Text). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.im. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen