我問a question about callbacks併到達另一個問題(見評論)。 閉包與回調有什麼不同?閉包與回調有什麼不同?
回答
查看此說明中的介紹:http://jibbering.com/faq/faq_notes/closures.html。它可以幫助你更好地理解閉包如何與功能相關聯。
下面是一組閉合的例子:http://www.javascriptkit.com/javatutors/closures2.shtml
基本上,回調就像一個函數指針。使它成爲閉包的位是該函數在它所在的上下文中訪問任何東西的時候,比如它之外的變量。當發生這種情況時,函數將使用變量的當前值(而不是複製它們)。參見實施例4。
啊,是的,這清除了弗雷德先生。謝謝! :) – leeand00 2009-03-05 19:42:10
有封閉here的一個很好的定義:
A「封閉」是表達 (典型的函數)可以具有 遊離與結合這些變量 一個 環境一起變量(即「關閉「的表達)。
實際上,這意味着它是一個具有一些隱藏變量的函數。
回調是一個更高層次的想法。一般來說,它是一個被傳遞的函數,意圖在以後被調用。在JavaScript中,閉包通常用作回調。
我沒有看到兩者是如何相關的?封閉使當地某些州的某些部分成爲某種功能,將其視爲經過參考。
回調意味着通知您某些更改並重定向程序流程。閉包可以修改本地狀態,但你永遠不會得到處理器時間來處理這個問題,就像你用回調一樣。
有人告訴我這兩個在這裏相關:http:// stackoverflow。COM /問題/ 615642 /的確,這種配合,你的定義 - 的 - 一個回調/ 615752#615752 – leeand00 2009-03-05 18:43:35
取決於上下文變量aka綁定變量(==對象狀態)的回調將是閉包。它將是一個純函數,否則,它只需要自由變量(==參數)。
簡而言之:使用上下文變量的回調是閉包。
- 1. local()與R中的其他閉包方法有什麼不同?
- 2. Comparator與包裝類有什麼不同?
- 3. 休息與迴歸有什麼不同?
- 4. jQuery。 queue()與使用回調函數有什麼不同?
- 5. 在XHR.onreadystatechange回調中,readyState與「4」(完整)有什麼不同?
- 6. 什麼是回調?它與更新面板控件有什麼不同?
- 7. collection.find與回調和不回調之間有什麼區別?
- 8. 什麼是具體調用,它與Reflection有什麼不同?
- 9. 「((...))」與「(...)」有什麼不同?
- 10. 爲什麼實例變量在閉包內有不同的值?
- 11. 兩個閉包之間有什麼不同?
- 12. 遞歸閉包返回什麼?
- 13. async w/await與同步調用有什麼不同?
- 14. 帶有Javascript回調的閉包
- 15. App.OnSearchActivated與App.OnActivated與ActivationKind.Search有什麼不同?
- 16. 什麼是不同的回調vs新的AsyncCallback(回調)?
- 17. 回調中的閉包
- 18. Javascript - 爲什麼返回封閉與IIFE?
- 19. python雞蛋與常規包裝有什麼不同?
- 20. 觀察者和回調之間有什麼大不同?
- 21. 處理函數和回調函數有什麼不同?
- 22. 返回值時`each`與`for-loop`有什麼不同?
- 23. 這與剛剛返回新的System.currentTimeMillis()有什麼不同嗎?
- 24. 斯威夫特。爲什麼dataTaskWithRequest不會調用閉包?
- 25. $()與重定向有什麼不同?
- 26. Web服務與api有什麼不同?
- 27. listview與listactivity有什麼不同
- 28. 與ramda.js代碼有什麼不同?
- 29. This.value與值,有什麼不同?
- 30. Object.prototype.toString.apply(value)與value.toString()有什麼不同?
Ref:http://stackoverflow.com/questions/2070275/javascript-closures-and-callbacks – 2016-10-26 02:50:52