Ein Closure ist etwas, das viele JavaScript-Entwickler ständig verwenden, aber wir halten es für selbstverständlich. Dabei ist die Funktionsweise gar nicht so kompliziert. Verstehen, wie man sie zielgerichtet einsetzt ist komplex.
In ihrer einfachsten Definition (wie bereits in anderen Antworten erwähnt) ist eine Closure im Grunde eine Funktion, die innerhalb einer anderen Funktion definiert ist. Und diese innere Funktion hat Zugriff auf Variablen, die im Bereich der äußeren Funktion definiert sind. Die häufigste Praxis bei der Verwendung von Closures ist die Definition von Variablen und Funktionen im globalen Bereich und der Zugriff auf diese Variablen im Funktionsbereich dieser Funktion.
var x = 1;
function myFN() {
alert(x); //1, as opposed to undefined.
}
// Or
function a() {
var x = 1;
function b() {
alert(x); //1, as opposed to undefined.
}
b();
}
Na und?
Eine Closure ist für einen JavaScript-Benutzer nichts Besonderes, bis man darüber nachdenkt, wie das Leben ohne sie aussehen würde. In anderen Sprachen werden Variablen, die in einer Funktion verwendet werden, aufgeräumt, wenn die Funktion zurückkehrt. Im obigen Beispiel wäre x ein "Null-Zeiger" gewesen, und Sie hätten einen Getter und Setter einrichten und Referenzen übergeben müssen. Hört sich nicht nach JavaScript an, oder? Danken Sie dem mächtigen Closure.
Warum sollte mich das interessieren?
Man muss nicht unbedingt über Verschlüsse Bescheid wissen, um sie zu benutzen. Aber wie andere auch schon gesagt haben, können sie gehebelt um fiktive private Variablen zu erstellen. Bis Sie private Variablen benötigen, verwenden Sie sie einfach wie bisher.