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.
- 1. In che modo l'implementazione di LinkedHashMap è diversa da HashMap?
- 2. Configura una richiamata dopo che una transazione è stata commessa
- 3. come è una tupla diversa da una classe?
- 4. È vero che ogni funzione in JavaScript è una chiusura?
- 5. Haskell - è una chiusura?
- 6. Scrittura di una classe che accetta una richiamata in Python?
- 7. Come racchiudere una libreria C in modo che possa essere richiamata da un servizio Web
- 8. Che cos'è una chiusura completa?
- 9. data-remote true che definisce una richiamata
- 10. Richiamata dopo ajax che carica una scheda
- 11. Richiamata alla discussione principale da una Task
- 12. È possibile restituire un riferimento da una chiusura in PHP?
- 13. importare un file da una directory diversa
- 14. Chiamare una richiamata in javascript
- 15. determinare, se una variabile è una chiusura valida in PHP
- 16. Come determinare se una sottostringa è in una stringa diversa
- 17. Restituire una vista da un'area diversa
- 18. Eseguire un EXE da una directory diversa?
- 19. In che modo Mesa è diversa dai driver OpenGL?
- 20. In che modo la profilatura è diversa dalla registrazione?
- 21. È una chiusura? Se è così, perché?
- 22. Esiste una versione di $ getJSON che non utilizza una richiamata?
- 23. In che modo una tabella a campi incrociati di Pandas è diversa da un pivot_table di Pandas?
- 24. In che modo PHP rileva che una sessione è scaduta?
- 25. Un codice che è una parola in avanti e una parola diversa all'indietro
- 26. Chiusura di una forma da un'altra forma?
- 27. Accesso a una HashMap da una diversa classe
- 28. Osservabile per una richiamata in Rx
- 29. Accesso a variabili private da una chiusura
- 30. È possibile trasformare una richiamata in un blocco asincrono?
Rif: http://stackoverflow.com/questions/2070275/javascript-closures-and-callbacks –