Wie JavaScript closures arbeiten?

Wie erklären Sie sich die JavaScript-closures jemand mit dem wissen der Konzepte, für die Sie bestehen (beispielsweise Funktionen, Variablen und dergleichen), aber nicht verstehen, Verschlüsse selbst?

Habe ich gesehen, das Schema Beispiel auf Wikipedia, aber leider hat es nicht geholfen.

Mein problem mit diesen und vielen Antworten ist, dass Sie den Ansatz einer abstrakten, theoretischen Perspektive, anstatt mit zu erklären, wieso einfach Verschlüsse sind notwendig, Javascript und den praktischen Situationen, in denen Sie Sie verwenden. Sie am Ende mit einem tl;dr-Artikel, die Sie haben, um slog durch, und die ganze Zeit denken, "aber, warum?". Ich würde einfach anfangen mit: - Verschlüsse sind eine nette Art des Umgangs mit den folgenden zwei Realitäten JavaScript: ein. Gültigkeitsbereich ist auf die Funktion Ebene, nicht auf der block-Ebene und b. vieles von dem, was Sie tun, in der Praxis in JavaScript ist asynchron - /event-driven.
Zum einen macht es die event-driven-code viel einfacher zu schreiben. Ich könnte Feuer eine Funktion, wenn die Seite geladen wird, um zu bestimmen, Einzelheiten über die HTML-oder die verfügbaren Funktionen. Ich kann definieren, und legen Sie einen handler in dieser Funktion und haben allen, die Kontext-info verfügbar, jedes mal, wenn der handler aufgerufen wird, ohne erneute Abfrage. Lösen Sie das problem einmal, Wiederverwendung auf jeder Seite, wo das hf ist es erforderlich, mit reduziertem Aufwand auf handler neu-Aufruf. Sie immer sehen, die gleichen Daten wieder zugeordnet zweimal in einer Sprache, die Sie nicht hat? Verschlüsse machen es viel einfacher, Sie zu vermeiden, dass Art der Sache.
Für Java-Programmierer, die kurze Antwort ist, dass es die Funktion entspricht einer inneren Klasse. Eine innere Klasse enthält auch eine implizite Zeiger auf eine Instanz der äußeren Klasse, und wird für viel den gleichen Zweck (das heißt, anlegen von event-Handlern).
Verstanden, dass diese viel besser von hier: javascriptissexy.com/understand-javascript-closures-with-ease. Noch benötigt ein closure auf Schließung nach dem Lesen der anderen Antworten. 🙂
Ich fand dieses Beispiel aus der Praxis sehr nützlich: youtube.com/watch?v=w1s9PgtEoJs

InformationsquelleAutor |

Schreibe einen Kommentar