2009-03-05 105 views

回答

12

查看此說明中的介紹:http://jibbering.com/faq/faq_notes/closures.html。它可以幫助你更好地理解閉包如何與功能相關聯。

下面是一組閉合的例子:http://www.javascriptkit.com/javatutors/closures2.shtml

基本上,回調就像一個函數指針。使它成爲閉包的位是該函數在它所在的上下文中訪問任何東西的時候,比如它之外的變量。當發生這種情況時,函數將使用變量的當前值(而不是複製它們)。參見實施例4。

+0

啊,是的,這清除了弗雷德先生。謝謝! :) – leeand00 2009-03-05 19:42:10

4

有封閉here的一個很好的定義:

A「封閉」是表達 (典型的函數)可以具有 遊離與結合這些變量 一個 環境一起變量(即「關閉「的表達)。

實際上,這意味着它是一個具有一些隱藏變量的函數。

回調是一個更高層次的想法。一般來說,它是一個被傳遞的函數,意圖在以後被調用。在JavaScript中,閉包通常用作回調。

7

不同定義:

Callback -

回調是作爲參數傳遞給其他代碼傳遞可執行代碼。

Closure -

的閉合是在含有一種或多種結合的變量的環境中進行評價的功能。被調用時,函數可以訪問這些變量。

-1

我沒有看到兩者是如何相關的?封閉使當地某些州的某些部分成爲某種功能,將其視爲經過參考。

回調意味着通知您某些更改並重定向程序流程。閉包可以修改本地狀態,但你永遠不會得到處理器時間來處理這個問題,就像你用回調一樣。

+0

有人告訴我這兩個在這裏相關:http:// stackoverflow。COM /問題/ 615642 /的確,這種配合,你的定義 - 的 - 一個回調/ 615752#615752 – leeand00 2009-03-05 18:43:35

1

取決於上下文變量aka綁定變量(==對象狀態)的回調將是閉包。它將是一個純函數,否則,它只需要自由變量(==參數)。

3

簡而言之:使用上下文變量的回調是閉包。

相關問題