閉包是什么?

2018/10/28/ 看阮一峰博客有感

閉包就是能訪問其他函數(shù)內(nèi)部變量的函數(shù),理解這句話可以從以下幾點開始。


  1. 閉包為什么是函數(shù)?
    解釋這點需要先了解 JavaScript 語言特有的一種結(jié)構(gòu)--鏈式作用域,即為,子對象會一級一級地向上尋找所有父對象的變量。所以,父對象的所有變量,對子對象是可見的,反之則不成立。

    了解這點后,可做以下推論,外部無法訪問父函數(shù)的局部變量,而子函數(shù)可以訪問父函數(shù)的局部變量,只要將子函數(shù)作為返回值,就可以在外部間接訪問到父函數(shù)的局部變量了。

    因此可以把閉包簡單理解成"定義在一個函數(shù)內(nèi)部的函數(shù)"。

    所以,在本質(zhì)上,閉包就是將函數(shù)內(nèi)部和函數(shù)外部連接起來的一座橋梁。


  1. 閉包的作用

    一個是前面提到的可以讀取函數(shù)內(nèi)部的變量,另一個就是讓這些變量的值始終保持在內(nèi)存中。

    父函數(shù)將子函數(shù)作為返回值,再將子函數(shù)賦值給一個變量,所以子函數(shù)會存在于內(nèi)存中,而子函數(shù)依賴于父函數(shù)存在,所以父函數(shù)也會存在于內(nèi)存中,也就不會被垃圾回收機制回收。

?著作權(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)容

  • 分布式賬本 分布式賬本,就是交易記賬由分布在不同地方的多個節(jié)點共同完成,而且每一個節(jié)點都記錄的是完整的賬目,因此它...
    d719f6b05f08閱讀 354評論 0 0
  • 現(xiàn)在就算你難過到哭 他也不會摸摸你 只能想著他很疼顧不上你 很多時候 剛開始兩個人在一起都是因為脆弱的時候?qū)Ψ匠霈F(xiàn)...
    95fcfff80434閱讀 222評論 2 0
  • 過了一個漫長又陰冷的寒冬,終于迎來了盧村的晴天。歐洲的冬季太漫長了,讓人一直處于負能量中。但還好,終于等來了一...
    Sylvie小喬閱讀 299評論 0 0
  • 在這邊有一項小組報告要做,一個小組就一個主題,搜集資料,制成文本資料,并且需要在同學(xué)面前講述,給大家做報告,因此也...
    小i書閱讀 218評論 0 0
  • 世界上壽命最長的鳥類,一生的年齡可達70歲。可是很少有人知道,要活這么長的壽命,在其生命的中期必須做出艱難卻重要的...
    超越凡塵118閱讀 783評論 1 4

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