前端閉包在什么時候用 JavaScript里的閉包是什么?應用場景有哪些?
JavaScript里的閉包是什么?應用場景有哪些?閉包是指在Javascript中,內部函數總是可以訪問其所在的外部函數中聲明的參數和變量,即便外部函數已經被銷毀,閉包任然可以持有它們(參數或變量)
JavaScript里的閉包是什么?應用場景有哪些?
閉包是指在Javascript中,內部函數總是可以訪問其所在的外部函數中聲明的參數和變量,即便外部函數已經被銷毀,閉包任然可以持有它們(參數或變量)
使用場景
很多人可能不清楚閉包是什么,但是在下代碼時其實已經時不時地用到了閉包。比如:
利用閉包實現私有變量
慎用閉包
閉包是一把雙刃劍,需要慎用。。。
正如它的定義一樣,閉包能夠保存函數外部的參數或變量 ,那么外部函數被銷毀時,被閉包持有的這些參數或變量,在閉包函數被銷毀前,是不會被銷毀的,我們需要清晰地知道,這些閉包函數它們的銷毀時機,避免內存泄漏 , 比如:
上圖寫了一段偽代碼,Dep中的getProfile方法和該方法訪問的 profile變量構成了一個閉包,這個閉包被 document 注冊成為了一個click handler,所以在這個click handler被注銷之前, 閉包所持有的 profile變量都會一致停留在內存無法釋放,如果開發(fā)者忽略了注銷事件的問題,就會造成較嚴重的內存泄漏。