在 JS 中閉包為什麼叫 閉包 ,而不用其它名稱命名?

時間 2021-05-11 00:56:51

1樓:西門吹牛

這個問題的最終解釋權,需要找這個語法的作者了。

哈哈,我覺得關注MDN中對其的定義及解釋,比樓主的問題更有價值

Closures

2樓:tearshark

第一,沒必要用別的名字。咱又不是搞地下工作的,沒必要整一些暗號一樣的詞彙來干擾試聽。

第二,closure和lambda表現上功能很接近。大部分叫closure的,是採用儲存環境塊來實現的,指令碼類語言用得比較多。大部分叫lambda的,是採用捕獲變數的方式來實現的。

第三,叫什麼還是語言發明者的自由,不用刻意在意名字是否如你所期。

3樓:Milo Yip

closure 原本是英文中動詞 close 的名詞,表示閉合、關閉。但中文很多動詞是沒有直接對應的名詞,而需要加入其他詞來表示名詞。

closure 這個計算機詞彙,是借用了數學上 closure 的中文翻譯「閉包」。加上了「包」可以表示它是乙個名詞形式。也許有其他更好的翻譯,例如「閉合作用域」、「閉域」等。

不過現時這個中文翻譯已太普遍了,嘗試用其他翻譯可能做成更多混淆。

有時候在各種專業領域裡,不要從字面猜它的意思,因為詞語是很難字面上表達它準確的定義。更重要是意會它的實際意義。

4樓:「已登出」

閉包這個詞是從數學抄過來的,雖然意思不一樣。

我覺得更好的問題是,為什麼https://en.wikipedia.

org/wiki/Closure_(computer_programming)要用https://en.wikipedia.

org/wiki/Closure_(mathematics)的名字。

5樓:二胡卯子

不一定完全回答了問題:

JS中迴圈和閉包如何理解?

鹽麵包 啟動了 1 5 的迴圈,每次都通過呼叫 setTimeout 建立乙個定時器。首次迴圈的 i 1,那麼延遲為 1 1000 1 秒。第二次及之後的延遲也就是 2,3 i 1000 秒。此時迴圈已經跑完,建立好了所有的定時器,i 最終值為 6。定時器觸發時,輸出了變數 i 也就是 6 了。 哦...

JS閉包的真正意義?

qianchaochushui 本質就在與讓乙個全域性變數,訪問函式內部就變數。一般的全域性變數 函式 是沒法訪問另乙個函式內部的變數的,閉包 函式內部返回的函式 可以。意義的話,就看你怎麼去使用了。 做個補充吧,我就不當搬運工了,直接看鏈結 英文 Closures MDN這篇閉包的文章比較淺顯實用...

python中的閉包和yield?

Jimmy Cheung 其實嘛,python裡有三種scope,分別是global scope,enclosing scope 和 local scope.第一和第三種就很好理解啦,關鍵在於第二種enclosing scope,closure用的就是這個。當乙個函式wrap另乙個函式 def fo...