2009-03-05 6 views

Antwort

12

Überprüfen Sie die Einführung in diesem: http://jibbering.com/faq/faq_notes/closures.html. Es kann Ihnen helfen, besser zu verstehen, wie sich Schließungen auf Funktionen beziehen. Hier

ist ein Satz von Verschluss Beispielen: http://www.javascriptkit.com/javatutors/closures2.shtml

Grundsätzlich ist der Rückruf ist wie ein Funktionszeiger. Das Bit, das es zu einem Abschluss macht, ist, wenn diese Funktion auf etwas in dem Kontext, in dem sie sich befindet, zugreift, wie Variablen außerhalb davon. Wenn dies geschieht, verwendet die Funktion die aktuellen Werte der Variablen (anstatt sie zu kopieren). Siehe Beispiel 4.

+0

Ah ja, das macht es klar Herr Fred. Vielen Dank! :) – leeand00

4

Es gibt eine gute Definition von Verschlüssen here:

A „Schließung“ ist ein Ausdruck (typischerweise eine Funktion), die freie Variablen zusammen mit einer Umwelt haben können, die diese Variablen bindet (das " schließt "den Ausdruck".

In der Praxis bedeutet das, dass es sich um eine Funktion handelt, die einige versteckte Variablen enthält.

Ein Rückruf ist eine übergeordnete Idee. Im Allgemeinen ist es eine Funktion, die in der Absicht weitergegeben wird, zu einem späteren Zeitpunkt aufgerufen zu werden. In JavaScript werden Schließungen oft als Callbacks verwendet.

7

Unterschiedliche Definitionen:

Callback -

ein Rückruf ist ausführbaren Code, der als Argument für einen anderen Code übergeben wird.

Closure -

eine Schließung ist eine Funktion, die in einer Umgebung, die eine oder mehr gebundenen Variablen ausgewertet wird. Beim Aufruf kann die Funktion auf diese Variablen zugreifen.

-1

Ich kann nicht sehen, wie die beiden überhaupt verwandt sind? Eine Schließung trägt Teile eines lokalen Staates in eine Funktion, denken Sie daran, dass sie durch Verweis geht.

Ein Rückruf soll Sie über bestimmte Änderungen informieren und den Programmablauf umleiten. Die Schließung könnte den lokalen Zustand ändern, aber Sie würden niemals Prozessorzeit dafür bekommen, wie bei einem Callback.

+0

Jemand sagte mir, die beiden sind hier verwandt: http: // stackoverflow.com/questions/615642/does-this-passen-Ihre-Definition-eines-Callback/615752 # 615752 – leeand00

1

Ein Callback abhängig von einer Kontextvariablen aka gebundener Variablen (== Objektstatus) ist ein Closure. Es ist eine reine Funktion, wenn es nur freie Variablen (== Parameter) braucht.

3

In einfachen Worten: Ein Rückruf mit Kontextvariablen ist eine Schließung.

Verwandte Themen