2009-03-05 13 views

risposta

12

Controllare la presentazione in questo: http://jibbering.com/faq/faq_notes/closures.html. Può aiutarti a capire meglio come le chiusure si riferiscono alle funzioni.

Ecco una serie di esempi di chiusura: http://www.javascriptkit.com/javatutors/closures2.shtml

Fondamentalmente, la richiamata è come un puntatore alla funzione. Il bit che ne fa una chiusura, è quando quella funzione accede a qualsiasi cosa nel contesto in cui vive, come le variabili al di fuori di essa. Quando ciò accade, la funzione utilizzerà i valori correnti delle variabili (anziché copiarli). Vedere l'esempio 4.

+0

Ah sì, questo chiarisce il signor Fred. Grazie! :) – leeand00

4

C'è una buona definizione di chiusure here:

A "chiusura" è un'espressione (in genere una funzione) che può avere variabili libere insieme ad un ambiente che lega le variabili (che " chiude "l'espressione).

In pratica, ciò significa che è una funzione che ha alcune variabili nascoste.

Un callback è un'idea di livello superiore. Generalmente è una funzione che viene trasmessa con l'intento di essere chiamata in un secondo momento. In JavaScript, le chiusure sono spesso utilizzate come callback.

7

definizioni diverse:

Callback -

un callback è codice eseguibile che viene passato come argomento per altro codice.

Closure -

chiusura è una funzione che viene valutata in un ambiente contenente una o più variabili legate. Quando chiamato, la funzione può accedere a queste variabili.

-1

Non riesco a vedere come i due sono anche correlati? Una chiusura porta parti di uno stato locale in una funzione di qualche tipo, pensandole come passanti per riferimento.

Un callback ha lo scopo di notificare determinati cambiamenti e reindirizza il flusso del programma. La chiusura potrebbe modificare lo stato locale ma non avresti mai il tempo del processore per gestirlo, come faresti con un callback.

+0

Qualcuno mi ha detto che i due sono correlati qui: http: // StackOverflow.com/domande/615642/fa-il-fit-your-definition-of-a-callback/615.752 # 615.752 – leeand00

1

Un callback dipendente da una variabile di contesto, ovvero variabili associate (== stato oggetto), sarà una chiusura. Sarà una pura funzione, altrimenti, quando prende solo variabili libere (== parametri).

3

In parole semplici: un callback che utilizza variabili di contesto è una chiusura.

Problemi correlati