Ihre Aufmerksamkeit ist eine Übersetzung eines Artikels von Parathan Thiyagalingam, der auf medium.freecodecamp.org veröffentlicht wurde. Möchten Sie wissen, wie JavaScript-Verschlüsse funktionieren? Schau unter die Katze!
 Foto Austin Distel mit Unsplash
Foto Austin Distel mit UnsplashEin Abschluss ist eine Kombination aller Variablen im Gültigkeitsbereich zum Zeitpunkt der Funktionserstellung. Um Closure verwenden zu können, müssen Sie eine verschachtelte Funktion erstellen, dh eine Funktion innerhalb der Funktion. Die innere Funktion hat auch nach Abschluss der äußeren Funktion Zugriff auf Variablen im Bereich der äußeren Funktion. (Es ist der 
Abschluss , der diesen Zugriff ermöglicht.) Jedes Mal, wenn eine Funktion erstellt wird, wird der Abschluss erstellt.
Bevor Sie das Konzept der Schließungen verstehen, sollten Sie sich die Bereichsketten in JavaScript überlegen. 
In der Regel gibt es zwei Arten von Sichtbarkeitsbereichen: globale und lokale.
In JavaScript kann auf eine Variable innerhalb einer Funktion nicht extern zugegriffen werden - im Gegensatz zu beispielsweise Variablen innerhalb eines Blocks (unter Bedingungen wie 
if und 
while ).
Auf dieser Grundlage hat eine Funktion in JavaScript einen Gültigkeitsbereich, ein Block jedoch nicht.
 var a = 10; function app(){ var b = 2; console.log(a);  
Wie wir bereits wissen, ist a eine globale Variable und 
b ist lokal, dh wird nur von der 
app Funktion verwendet. Außerhalb des lokalen Bereichs haben wir keinen Zugriff auf die lokale Variable.
Verwendung einer verschachtelten Funktion (Funktion innerhalb einer Funktion)
 var a = 10; function app(){ var b = 2; var d = 3; function add(){ var c = a + b; } return add; } var x = app(); console.dir(x); 
Im obigen Beispiel ist 
app die übergeordnete Funktion, 
add die untergeordnete Funktion.
- Anstelle von console.log wird console.dir verwendet, um alle Eigenschaften des ausgewählten Objekts anzuzeigen.
- Die Variable x wird der appFunktion zugewiesen, die dann dieaddFunktion zurückgibt. Auf diese Weise können Sie alle Eigenschaften des Objekts der Funktionaddanzeigen.
Wenn Sie die Konsole in einem Browser öffnen, finden Sie das 
Closure Objekt im 
Scopes -Datenarray.

Da die Funktion "Intern 
add Zugriff auf die Variablen 
b und 
d hat , die zur externen Funktion gehören, werden diese beiden Variablen als Referenz zum Objekt " 
Closure hinzugefügt.
Betrachten Sie ein anderes Schließungsbeispiel.
 var a = 10; var startFunc; function app(){ var b = 2; function add(){ var c = a + b; console.log(c); } startFunc = add(); } app();  
- Der globalen Funktion startFuncdie Funktionaddzugewiesen, die einstartFuncderappfür übergeordnete Funktionen ist.
- Dies wird erst nach Aufruf der App-Funktion möglich. Andernfalls startFuncFunktionstartFuncwie eine globale Variable ohne zugewiesenen Wert.
Verwendung von Verschlüssen in JavaScript
Viele von uns, die beim Schreiben von Code Verschlüsse verwenden, verstehen nicht ganz, warum sie dies tun. In JavaScript fehlen die 
öffentlichen , 
geschützten und 
privaten Modifikatoren, die in objektorientierten Programmiersprachen enthalten sind. Um den Zugriff auf den Namespace für externen Code zu blockieren, müssen wir daher auf die Hilfe von Funktionen zurückgreifen.
Und da es sich um Funktionen 
handelt, startet die 
sofort aufgerufene Funktion (IIFE) unmittelbar nach der Ansage. Sie muss nicht einmal angerufen werden.
Die IIFE-Syntax sieht folgendermaßen aus:
 (function(){  
Betrachten Sie dieses Beispiel:
 var studnetEnrollment = (function () {  
count und 
prefix sind zwei private Variablen, die nicht geändert werden können. Der Zugriff auf sie ist nur für die interne Funktion geöffnet (in unserem Fall ist dies die 
innerFunc Funktion).
- Beim ersten studentEnrollmentFunktionstudentEnrollmenterhöht die FunktionstudentEnrollmentden Wert der Zählvariablen auf 1.
- Beim zweiten Mal steigt die countvon 1 auf 2.
- All dies ist nur durch Schließen möglich.
Fazit
Ein Abschluss ist eine Menge von Variablen einer externen Funktion, aufgrund derer der Umfang der internen Funktion Zugriff auf diese Variablen erhält. Dies schützt den globalen Namespace.
Die Schließungsfunktion ermöglicht es Entwicklern, sauberen Code zu schreiben - beispielsweise in objektorientierten Programmiersprachen, Code, in dem globale und lokale Variablen nicht verwechselt werden.
Hab eine schöne Codierung!