JavaScript面試題總結系列(七)

7.JavaScript閉包

概念

閉包是函數,是能夠讀取其他函數內部變量的函數。例如:函數 A 返回了一個函數 B,並且函數 B 中使用了函數 A 的變量,函數 B 就被稱爲閉包。

特性

  • 函數內部再嵌套函數
  • 內部函數可以引用外層函數的參數和變量
  • 內部函數的參數和變量不會被垃圾回收機制回收

    作用

  • 讀取函數內部的變量
  • 讓這些變量始終保持在內存中,實現緩存
  • 避免全局變量的污染
  • 使用閉包主要是爲了設計私有的方法和變量,即封裝對象的私有屬性和私有方法,實現封裝
  • 利用閉包可以突破作用鏈域

    缺點

  • 消耗內存。閉包使數據會常駐內存,會增大內存使用量。
  • 內存泄漏。使用不當很容易造成內存泄露。

    注意

  • 由於閉包會使得函數中的變量都被保存在內存中,內存消耗很大,所以不能濫用閉包,否則會造成網頁的性能問題,在IE中可能導致內存泄露。
  • 解決方法是,在退出函數之前,將不使用的局部變量全部刪除。


參考鏈接
http://blog.poetries.top/FE-Interview-Questions/base/#_1-%E9%97%AD%E5%8C%85
http://blog.poetries.top/FE-Interview-Questions/advance/#_9-%E9%97%AD%E5%8C%85

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章