Verschlüsse in JavaScript
In JavaScript ist eine Funktion ein Codeblock, der eine bestimmte Aufgabe ausführen soll. Es wird ausgeführt, wenn Sie es aufrufen.
Zum Beispiel:
function myFunction(message){
console.log(message)
}
myFunction("Hello there!!")
myFunction("Welcome, boss")
Aber was ist, wenn wir wissen wollen, was bei der ersten oder der vorherigen Hinrichtung passiert ist? Hier kommt es zu Schließungen.
Was sind Verschlüsse?
Mit einfachen Worten: Wenn eine Funktion eine andere Funktion zurückgibt, die Zugriff auf ihren äußeren Funktionsumfang hat, spricht man in JavaScript von Abschlüssen.
Zum Beispiel:
function outer (){
let counter = 0;
function inner (){
counter++;
return counter;
}
return inner
}
const result = outer()
function inner (){
counter++;
return counter;
}
Irgendwie merkt sich JavaScript also den vorherigen counterWert und führt die mathematische Operation aus.
Sie fragen sich vielleicht, wie Js das macht?
Wenn eine Funktion eine Funktion zurückgibt, gibt sie nicht nur die Funktion zurück, sondern auch den lexikalischen Gültigkeitsbereich dieser Funktion. Alle diese Variablen und Daten, die mit dieser zurückgegebenen Funktion als versteckte Eigenschaft zusammen mit dieser zurückgegebenen Funktion in Zusammenhang stehen. Dieses versteckte Eigentum wird auch genanntBackpack
Dieser Rucksack hat viele Namen:
- Geschlossen wegen „Variabler Umgebung“ (COVE)
- Persistente lexikalisch bereichsreferenzierte Daten (PLSRD)
- Rucksack
- Schließung
Schauen wir uns ein anderes Beispiel an:
function outer (){
let counter = 0;
function inner (){
counter++;
return counter;
}
return inner
}
const result = outer()
result() // 1
result() // 2
const anotherResult = outer()
anotherResult() // 1
anotherResult() // 2
Warum Schließungen:
- Es hilft uns, Hilfsfunktionen zu erstellen, die leistungsstarke Funktionen wie Once und Memoize ermöglichen.
- Hilft uns bei der Erstellung von Iteratoren und Generatoren unter Verwendung des lexikalischen Bereichs und der Abschlüsse.
- Viele JavaScript-Entwurfsmuster, einschließlich des Modulmusters, verwenden Schließung, indem sie den Status einer Anwendung beibehalten, ohne den globalen Namespace zu verschmutzen.
- Rückrufe und Versprechen basieren auf Abschlüssen, um den Zustand in der asynchronen JavaScript-Welt beizubehalten.

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































