經典前端面試必問題:什么是閉包?閉包的好處是什么,壞處是什么?


什么是閉包?

一個簡單的閉包如下:

function a(){

  var  i=10;

  return function b(){

    console.log(i)

  }

}

var c=a();//運行此處返回的是b函數

c();//執行b函數

從此處可以看出,其實閉包一句話總結就是:函數嵌套函數,然后外部函數能夠獲取到函數內部的私有數據;


那么閉包的好處是什么呢?

好處: 

       其實,在函數外部我們想獲取函數內部的變量,數據這些,是無法獲取到的,而閉包正好滿足了這一點。所以,閉包最大的好處就是,能夠在函數外部獲取到函數內部的私有數據,這些變量和數據會一直存在函數中,不會在調用函數之后被垃圾回收機制回收。

壞處:

而由於函數的私有數據會一直存在內存中,這也將導致內存過多,內存消耗大造成內存泄漏

所以,我們不應該濫用閉包,而為了解決這一缺點,我們可以在退出函數之前,將局部變量刪除掉

這是我個人的一些學習筆記,可能有不對的地方,大神勿噴哈!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM