Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Einführung in das Prinzip des Abschlusses in JavaScript

不言
Freigeben: 2019-01-18 10:08:58
nach vorne
2202 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine detaillierte Einführung in das Abschlussprinzip in JavaScript. Ich hoffe, dass er für Freunde hilfreich ist.

Um den Schließmechanismus in js zu verstehen, müssen Sie zunächst die globale Ausführungsumgebung, die Ausführungsumgebung auf Blockebene, die Funktionsausführungsumgebung, das variable Objekt, den Umgebungsstapel und die Bereichskette verstehen und die Ausführungsumgebung zerstören .

Globale Ausführungsumgebung

Die globale Ausführungsumgebung bezieht sich auf die äußerste Ausführungsumgebung. Im Web wird die globale Ausführungsumgebung als Fensterobjekt betrachtet, sodass die Variablen und Funktionen, die Sie in der globalen Umgebung erstellen, Eigenschaften und Methoden des Objekts sind.

Funktionsausführungsumgebung

Die Funktionsausführungsumgebung bezieht sich auf den Funktionskörper.

Ausführungsumgebung auf Blockebene

Die Ausführungsumgebung auf Blockebene bezieht sich auf den Definitionsbereich auf Blockebene.

'use strict';
// 全局执行环境
// .....
{
    // 块级执行环境
    // 代码 ....
}

function func() {
   // 函数执行环境
   //... 
}
Nach dem Login kopieren

Variables Objekt

Jeder Ausführungsumgebung ist ein Variablenobjekt zugeordnet. Im Variablenobjekt werden Variablen gespeichert und Funktionen, die in der aktuellen Umgebung definiert sind. Bei der Verwendung von Variablen oder Funktionen werden Member auf einem Variablenobjekt gefunden. Auf dieses Objekt kann nicht zugegriffen werden, aber Sie können die definierten Mitglieder in der Bereichskette [scope] anzeigen (Sie können es möglicherweise nicht sehen, wenn es nicht verwendet wird, dies hängt mit der Optimierung zusammen).

Umgebungsstapel

Jede Funktion oder jeder Block hat seine eigene Ausführungsumgebung. Wenn der Ausführungsfluss in eine Funktion eintritt, wird die Umgebung der Funktion in den „Umgebungsstapel“ verschoben. Nachdem die Funktion ausgeführt wurde, entnimmt der Stapel sie, zerstört das variable Objekt und gibt dann die Kontrolle an die vorherige Ausführungsumgebung zurück. Wenn die externe Ausführungsumgebung auf das Variablenobjekt der internen Ausführungsumgebung verweist, kann das Variablenobjekt der internen Umgebung nicht zerstört werden (z. B. durch Schließen).

Bereichskette

Die Bereichskette ist eine Liste, die variable Objekte speichert, die sich auf die Ausführungsumgebung beziehen. Die Liste der variablen Objekte kann über das Attribut [scope] angezeigt werden .

Beziehungsdiagramm




Erklärung mit Beispielen

// Beispiel 1: Gemeinsame Funktionsverschachtelung

'use strict';
function a() {
    let x = 2;
    return function() {
        return x;
    }
}
let func = a(); // 返回a函数体内的 匿名函数
console.log(func()); // 在全局执行环境中,访问a函数内部变量。 如果是非闭包函数,那么执行完后
Nach dem Login kopieren

Werfen wir einen Blick auf die Bereichskette der anonymen Funktion im Hauptteil der Funktion a.

[Scopes]: ist die Bereichskette der aktuellen anonymen Funktion.

Der Index ist 0: Es ist das variable Objekt der Ausführungsumgebung der Funktion a, und x repräsentiert das variable Objekt.

Mit Index 1: globales Ausführungsumgebungsvariablenobjekt.

// Beispiel 2: Auf interne Blockvariablen zugreifen

1: Inhaltsfunktion auf Blockebene zurückgeben, um auf Inhaltsvariablen auf Blockebene in der globalen Ausführungsumgebung zuzugreifen.

'use strict';
let func = null;
{
    let x = "你好";
    func = function () {
        return x;
    }
}
// 返回块级内容函数 实现在全局执行环境中访问块级内容变量。
console.log(func());
Nach dem Login kopieren

Scope-Chain-Diagramm:

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in das Prinzip des Abschlusses in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!