Hallo,
In diesem Beitrag lernen wir Schließungen.
Abschlüsse sind in JavaScript unerlässlich, da sie es einer Funktion ermöglichen, auf Variablen aus ihrem übergeordneten Bereich zuzugreifen, selbst nachdem diese übergeordnete Funktion geschlossen wurde. Dies ist von entscheidender Bedeutung für Funktionen, die sich Daten im Laufe der Zeit merken müssen, wie etwa bei Rückruffunktionen oder der Aufrechterhaltung des Zustands. Hier ist zu beachten, dass die nicht verwendeten Variablen des übergeordneten Bereichs durch Garbage Collection erfasst werden.
Definition:
Ein Abschluss ist die Kombination einer gebündelten (eingeschlossenen) Funktion mit Verweisen auf ihren umgebenden Zustand (die lexikalische Umgebung). Mit anderen Worten: Ein Abschluss gewährt einer Funktion Zugriff auf ihren äußeren Gültigkeitsbereich. In JavaScript werden Abschlüsse jedes Mal erstellt, wenn eine Funktion zum Zeitpunkt der Funktionserstellung erstellt wird.
Grundsätzlich haben Schließungen Zugriff auf:
Bonuspunkt
Lexikalischer Geltungsbereich: Innere Funktionen haben Zugriff auf Variablen im äußeren Geltungsbereich.
Lassen Sie es uns anhand eines Beispiels verstehen.
Beispiel
F> Schreiben Sie eine Funktion createCounter. Es sollte eine anfängliche ganzzahlige Initialisierung akzeptieren. Es sollte ein Objekt mit drei Funktionen zurückgeben.
Die drei Funktionen sind:
increment() erhöht den aktuellen Wert um 1 und gibt ihn dann zurück.
decrement() reduziert den aktuellen Wert um 1 und gibt ihn dann zurück.
reset() setzt den aktuellen Wert auf init und gibt ihn dann zurück.
Siehe den kommentierten Code unten für ein init = 5-Fallbeispiel.
Lösung
var createCounter = function(init) { const INITIAL_VALUE = init; return { increment: () => ++init, decrement: () => --init, reset: () => init=INITIAL_VALUE, } }; /** * const counter = createCounter(5) * counter.increment(); // 6 * counter.reset(); // 5 * counter.decrement(); // 4 */
Erklärung:
Wenn Sie Zweifel oder Vorschläge haben, können Sie diese gerne in Kommentaren hinzufügen.
Diese Frage wurde von Leetcode übernommen. Link
Bedenken Sie schließlich, dass global deklarierte Variablen für jeden Abschluss in einem Skript zugänglich sind.
Ich hoffe, Sie haben jetzt ein gutes Verständnis für Schließungen. Vielen Dank fürs Lesen
Das obige ist der detaillierte Inhalt vonVerschlüsse in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!