《知識問答》不依賴外部作用域對象的嵌套函數是閉包嗎?

一樓:“註銷”

如果我們嚴格遵循所謂封閉的定義,我們會有一些有趣的說法,比如

零=f=s=s不是閉包。

一=f=s=f(s)是一個閉包

二樓:橙色

首先,問題中的兩個例子存在一些問題。“返回”這個詞應該是“功能”,而不是“fn”。

實際上,在第二個例子中,“返回”取決於外部環境,例如“參數”和“這個”。

單純比較兩個例子是不是閉包真的沒用。重要的是理解它們的一些實現機制,比如詞法范圍。

三樓:蘭博

嚴格來說(從GC機制來說),函數b真的不是閉包,因為它畢竟不占用資源。

閉包,如果可以用的話,暫時不要去深究。如果你用得太多,你會明白的。

實際上,您一直在使用閉包。

第四層:何

你問的B中的fn,是指自由變量alert,所以是閉包。

當然,與A相比,你可能指的是B中的fn沒有引用B范圍內的任何變量,如果拋開alert,B中的fn嚴格來說並不是閉包。

但是一般來說,我們隻說某一種語言是否支持閉包。如果這種語言支持閉包,就沒有必要區分哪個函數是閉包,哪個不是,因為這種區分沒有什麼價值。也許在隻部分支持閉包的語言中(比如PHP),區分一個函數是否是閉包可能是有意義的。

五樓:

玉波了解閉包的特性,自然可以在實際工作中自由使用。沒有必要密切關註是否有關閉。

在我看來,於波應該是指,了解閉包的特性而忘記了閉包這個詞?