Ho chiesto a question about callbacks e sono arrivato ad un'altra domanda (vedi commento). In che modo una chiusura è diversa da una richiamata?In che modo una chiusura è diversa da una richiamata?
risposta
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.
Ah sì, questo chiarisce il signor Fred. Grazie! :) – leeand00
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.
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.
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
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).
In parole semplici: un callback che utilizza variabili di contesto è una chiusura.
Rif: http://stackoverflow.com/questions/2070275/javascript-closures-and-callbacks –