Was sind Verschlüsse in JavaScript und wie funktionieren sie?

Abschlüsse in JavaScript werden jedes Mal erstellt, wenn eine Funktion zum Zeitpunkt der Funktionserstellung erstellt wird. Es bietet eine bessere Kontrolle über den Code, wenn Sie sie verwenden.

ist eine funktionsorientierte Sprache, die dem Benutzer viel Freiheit gibt. Sie können eine Funktion dynamisch erstellen, in eine andere Variable kopieren oder als Argument an eine andere Funktion übergeben und später von einer anderen Stelle aus aufrufen. Abschlüsse in JavaScript werden jedes Mal erstellt, wenn eine Funktion zum Zeitpunkt der Funktionserstellung erstellt wird. In diesem Artikel werden wir Verschlüsse in der folgenden Reihenfolge verstehen:

Einführung in Closures in JavaScript

Ein Verschluss ist eine Kombination aus a Funktion zusammen mit Verweisen auf seinen Umgebungszustand, d. h. die lexikalische Umgebung, gebündelt. Mit anderen Worten, ein Abschluss bietet Ihnen Zugriff von einer inneren Funktion auf den Bereich einer äußeren Funktion.





Codierer - Verschlüsse in Javascript - Edureka

Die meisten Entwickler verwenden Verschlüsse in JavaScript bewusst oder unbewusst. Es bietet eine bessere Kontrolle über den Code, wenn Sie sie verwenden. Es ist auch die am häufigsten gestellte Frage .



Beispiel:

Funktion foo () {var x = 10 Funktion inner () {return x} return inner} var get_func_inner = foo () console.log (get_func_inner ()) console.log (get_func_inner ()) console.log (get_func_inner ())

Ausgabe:

10
10
10



Hier können Sie auf die zugreifen Variable x, das in der Funktion foo () bis zur Funktion inner () definiert ist, da die spätere die Bereichskette der einschließenden Funktion zum Zeitpunkt der Ausführung der einschließenden Funktion beibehält. Somit kennt die innere Funktion den Wert von x über ihre Bereichskette. So können Sie Verschlüsse in JavaScript verwenden.

Praktische Abschlüsse

Mit Closures können Sie die lexikalische Umgebung einer Funktion zuordnen, die diese Daten verarbeitet. Dies hat offensichtliche Parallelen zu Objekt orientierte Programmierung , wo Objekte es uns ermöglichen, die Eigenschaften des Objekts einer oder mehreren Methoden zuzuordnen.

Folglich können Sie einen Abschluss überall dort verwenden, wo Sie normalerweise ein Objekt mit nur einer einzigen Methode verwenden.

def __init __ (Selbst-) Python

Beispiel:

Funktion makeSizer (Größe) {Rückgabefunktion () {document.body.style.fontSize = Größe + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)

Das obige Beispiel wird im Allgemeinen als Rückruf angehängt: eine einzelne Funktion, die als Reaktion auf das Ereignis ausgeführt wird.

wie man Java zum Pfad hinzufügt

Scope Chain

Verschlüsse in JavaScript haben drei Bereiche:

  • Lokaler Geltungsbereich
  • Umfang der äußeren Funktionen
  • Globaler Geltungsbereich

Ein häufiger Fehler besteht darin, nicht zu erkennen, dass in dem Fall, in dem die äußere Funktion selbst eine verschachtelte Funktion ist, der Zugriff auf den Bereich der äußeren Funktion den einschließenden Bereich der äußeren Funktion umfasst, wodurch effektiv eine Kette von Funktionsbereichen erstellt wird.

// globaler Bereich var x = 10 Funktionssumme (a) {Rückgabefunktion (b) {Rückgabefunktion (c) {// äußere Funktionen Bereich Rückgabefunktion (d) {// lokaler Bereich Rückgabe a + b + c + d + x}}}} console.log (Summe (1) (2) (3) (4)) // log 20

Es kann auch ohne anonyme Funktionen geschrieben werden:

// globaler Bereich var x = 10 Funktionssumme (a) {Rückgabefunktion sum2 (b) {Rückgabefunktion sum3 (c) {// äußere Funktionen Bereich Rückgabefunktion sum4 (d) {// lokaler Bereich Rückgabe a + b + c + d + x}}}} var s = Summe (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) console.log (s3) // log 20

Im obigen Beispiel gibt es eine Reihe verschachtelter Funktionen, die alle Zugriff auf den äußeren Bereich einer Funktion haben. Sie können also sagen, dass Closures Zugriff auf alle äußeren Funktionsbereiche haben, in denen sie deklariert wurden.

Schließung innerhalb einer Schleife

Sie können Verschlüsse in JavaScript verwenden, um eine anonyme Funktion an jedem Index eines zu speichern Array . Nehmen wir ein Beispiel und sehen, wie Verschlüsse in einer Schleife verwendet werden.

Beispiel:

Funktion Outer () {var arr = [] var i für (i = 0 i<3 i++) { // storing anonymus function arr[i] = function () { return i } } // returning the array. return arr } var get_arr = outer() console.log(get_arr[0]()) console.log(get_arr[1]()) console.log(get_arr[2]())

Ausgabe:

3
3
3
3

Damit sind wir am Ende unseres Artikels angelangt. Ich hoffe, Sie haben verstanden, wie Schließungen in JavaScript funktionieren und wie sie verwendet werden, um eine bessere Kontrolle über den Code zu erhalten.

Nachdem Sie sich mit Closures in JavaScript vertraut gemacht haben, lesen Sie die von Edureka. Mithilfe der Schulung zur Webentwicklungszertifizierung erfahren Sie, wie Sie mit HTML5-, CSS3-, Twitter Bootstrap 3-, jQuery- und Google-APIs beeindruckende Websites erstellen und für Amazon Simple Storage Service (S3) bereitstellen.

Hast du eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich von 'Closures in JavaScript' und wir werden uns bei Ihnen melden.