JavaScript-Closures erklärt

JavaScript-Closures erklärt

1. Was ist ein Abschluss?

Abschluss: Die Kombination einer Funktion und des Zustands der Umgebung, in der die Funktion deklariert wird.
Das heißt, eine Funktion kann auf die Variablen der Umgebung zugreifen, in der sie definiert ist, auch wenn sie außerhalb der Umgebung aufgerufen wird, in der sie definiert ist.

Mithilfe von Closures können Sie Daten mit Funktionen verknüpfen, die diese Daten verarbeiten.

Zum Beispiel:

Funktion foo() {
	sei a = 1;
	return Funktion() {
		konsole.log(a);
	}
}
sei foo1 = foo();
foo1() // Ausgabe 1

Dies ist ein Beispiel für einen Abschluss. In foo wird eine Funktion zurückgegeben, und diese Funktion hat einen Abschluss, der den internen Gültigkeitsbereich von foo abdeckt, also a, sodass a immer erhalten bleibt und nicht erneut ausgeführt wird, wenn foo endet.

2. Die Rolle von Verschlüssen

2.1) Speicher

Was ist die Gedächtniseigenschaft von Closures?

Wenn ein Abschluss generiert wird, bleibt der Zustand der Umgebung, in der sich die Funktion befindet, immer im Speicher und wird nach dem Ende des äußeren Funktionsaufrufs nicht vom Garbage Collection-Mechanismus wiederhergestellt.

Zum Beispiel:

Funktion foo() {
    sei a = 0;
    return Funktion() {
        eine ++;
        konsole.log(a);
    }
}
sei foo1 = foo();
sei foo2 = foo();
foo1(); // 1
foo2(); // 1
foo2(); // 2
foo1(); // 2

Bildbeschreibung hier einfügen

Da a Teil des Closure ist, wird der Umgebungszustand von a beim Generieren des Closures im Speicher beibehalten und nach dem Ende des äußeren Funktionsaufrufs nicht gelöscht. Wenn foo1 verwendet wird, erhöht sich daher der Wert von a im Speicher um 1.
Dann sind die von foo1 und foo2 erzeugten Verschlüsse zwei unabhängige Verschlüsse, die sich gegenseitig nicht beeinflussen. Wenn foo2 also zum zweiten Mal aufgerufen wird, addiert es zum Ergebnis seines ersten Aufrufs 1.

2.2) Simulation privater Variablen

Stellen Sie sicher, dass eine Variable nur mit angegebenen Operationen bearbeitet werden kann.

Zum Beispiel :

Funktion foo() {
	sei A = 0;
	zurückkehren {
	    getA : Funktion() {
	        Rückgabe A;
	    }, 
	    hinzufügen: Funktion() {
	        Eine A++;
	    },
	    del : Funktion() {
	        A --;
	    }
	}
}
sei foo1 = foo();
console.log(foo1.getA()); // 0
foo1.add();
konsole.log(foo1.getA()); // 1
foo1.del();
console.log(foo1.getA()); // 0

Bildbeschreibung hier einfügen

Durch die Schließung wird sichergestellt, dass A nur den angegebenen Additions- und Subtraktionsoperationen unterzogen werden kann.

3. Hinweise zu Schließungen

Closures sollten nicht missbraucht werden, da sie sonst aufgrund übermäßiger Speichernutzung zu Leistungsproblemen auf der Webseite und sogar zu Speicherlecks führen können.

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalt auf 123WORDPRESS.COM lesen können!

Das könnte Sie auch interessieren:
  • Lassen Sie uns ausführlich über die Rolle von Closures in JS sprechen
  • Detaillierte Erklärung des Prinzips und der Funktion des JavaScript-Closures
  • Erweiterte Closures in JavaScript erklärt
  • Details zum JavaScript-Abschluss
  • Lassen Sie uns lernen, was Javascript-Closures sind

<<:  Darstellung von Eigenschaften wie OffsetWidth, ClientWidth, ScrollWidth, ScrollTop, ScrollLeft usw.

>>:  Zusammenfassung der Updates und gefundenen Probleme des Docker Consul-Containerdienstes

Artikel empfehlen

Vue echarts realisiert horizontales Balkendiagramm

In diesem Artikel wird der spezifische Code von V...

Richtige Methode zum Laden von Schriftarten in Vue.js

Inhaltsverzeichnis Schriftarten mit font-face ric...

Der vollständige Code der im Uniapp-Applet enthaltenen Radardiagrammkomponente

Effektbild: Der Implementierungscode lautet wie f...

So erhalten Sie die Schnittmenge/Differenz/Vereinigung zweier Mengen in MySQL

Typische MySQL-Szenarien: Schnittmenge und Differ...

TypeScript-Aufzählungstypen im Detail erklären

Inhaltsverzeichnis 1. Digitale Aufzählung 2. Zeic...

Erläuterung der Lösung zur mobilen H5-Bildgenerierung in JavaScript

Derzeit gibt es viele Betriebsaktivitäten für öff...

Detaillierte Erklärung des einfachen Stores von Vue

Die einfachste Store-Anwendung in Vue ist die glo...

Häufige Anwendungsszenarien für React Hooks (Zusammenfassung)

Inhaltsverzeichnis 1. Staatshaken 1. Grundlegende...

Tutorial zur Installation, Bereitstellung und Verwaltung von KVM-Virtualisierung

Inhaltsverzeichnis 1.kvm-Bereitstellung 1.1 KVM-I...

Mehrere Möglichkeiten zum einfachen Durchlaufen von Objekteigenschaften in JS

Inhaltsverzeichnis 1. Selbstaufzählbare Eigenscha...