閉包--Closure

學習Ajax模式之前,需要對閉包和回調函數的概念有所理解.

閉包的概念

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

從設計者的角度理解閉包

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

從函數式編程角度理解閉包

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

為什么閉包難理解

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

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

相關閱讀更多精彩內容

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

友情鏈接更多精彩內容