閉包--Closure

學(xué)習(xí)Ajax模式之前,需要對閉包和回調(diào)函數(shù)的概念有所理解.

閉包的概念

當(dāng)一個函數(shù)內(nèi)調(diào)用另一個函數(shù),同時這個函數(shù)引用了父函數(shù)的變量的時候,執(zhí)行父函數(shù)的時候,父函數(shù)的內(nèi)部變量不會被銷毀,而是像被東西包裹住了阻礙了內(nèi)存回收機(jī)制.這個包裹機(jī)制就叫做閉包closure.

從設(shè)計者的角度理解閉包

  • 廣義地理解函數(shù)
    函數(shù)本身也是一種特殊的對象. 可以理解成為一種有功能的,能被執(zhí)行這種功能的對象. 既然是對象,當(dāng)然希望對象內(nèi)能 永久地 隔離的 保存它私有的屬性. 閉包就是這一種設(shè)計模式.
  • 和函數(shù)作用域相違背
    因為JS自帶內(nèi)存回收機(jī)制,在這種機(jī)制作用下,函數(shù)的變量在函數(shù)執(zhí)行完后會被自動回收,那么作為函數(shù)這個對象的屬性的變量自然無法作為私有變量一樣地保存,所以閉包這種模式被設(shè)計出來. 既然把函數(shù)完全當(dāng)做對象看待,那么就可以在這個對象中加入對象的方法. 在函數(shù)對象的方法里調(diào)用對象的屬性, 這種被方法所保護(hù)的屬性就不會被垃圾回收機(jī)制處理. 就像一個泡泡包住了這個屬性.

從函數(shù)式編程角度理解閉包

  • 閉包首先是又函數(shù)式編程中引入的,函數(shù)式編程有幾個

為什么閉包難理解

一開始看閉包的時候也覺得比較困惑,思路全集中在為什么上了. 其實這是閉包被過分解讀了. 閉包無非是語JS設(shè)計出來的一種使用模式, 只要知道,會用就行了.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應(yīng)用都要依靠閉包實現(xiàn)。 下面就是...
    小翼_b998閱讀 124評論 0 0
  • ● 閉包基礎(chǔ) ● 閉包作用 ● 閉包經(jīng)典例子 ● 閉包應(yīng)用 ● 閉包缺點 ● 參考資料 1、閉包基礎(chǔ) 作用域和作...
    lzyuan閱讀 1,047評論 0 0
  • 閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應(yīng)用都要依靠閉包實現(xiàn)。 下面就是...
    魯uin閱讀 339評論 0 2
  • 閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應(yīng)用都要依靠閉包實現(xiàn)。 下面就是...
    云端漫記閱讀 276評論 0 0
  • 鮮蝦粥 一下午都在忙著處理工作上事情,跑這邊比較,跑那邊參考,拍照匯報必須要做好。給我自己買東西都沒有這么認(rèn)...
    七七行記閱讀 280評論 0 0

友情鏈接更多精彩內(nèi)容