es6的新特性有哪些 JavaScript里的閉包是什么?應(yīng)用場(chǎng)景有哪些?
JavaScript里的閉包是什么?應(yīng)用場(chǎng)景有哪些?許多人可能不知道閉包是什么,但他們實(shí)際上在編寫(xiě)代碼時(shí)經(jīng)常使用閉包。例如:使用閉包來(lái)實(shí)現(xiàn)私有變量閉包是一把雙刃劍,應(yīng)該謹(jǐn)慎使用。。。就像它的定義一樣,
JavaScript里的閉包是什么?應(yīng)用場(chǎng)景有哪些?
許多人可能不知道閉包是什么,但他們實(shí)際上在編寫(xiě)代碼時(shí)經(jīng)常使用閉包。例如:
使用閉包來(lái)實(shí)現(xiàn)私有變量
閉包是一把雙刃劍,應(yīng)該謹(jǐn)慎使用。。。
就像它的定義一樣,閉包可以在函數(shù)外部保存參數(shù)或變量。當(dāng)外部函數(shù)被銷(xiāo)毀時(shí),閉包所持有的參數(shù)或變量在閉包函數(shù)被銷(xiāo)毀之前不會(huì)被銷(xiāo)毀。我們需要清楚地知道這些閉包函數(shù)何時(shí)被銷(xiāo)毀以避免內(nèi)存泄漏,例如:
上圖編寫(xiě)了一個(gè)偽代碼。dep中的getprofile方法和該方法訪(fǎng)問(wèn)的profile變量構(gòu)成一個(gè)閉包。閉包是按文檔注冊(cè)為click處理程序的,因此在取消注冊(cè)click處理程序之前,閉包包含的概要文件變量將保留在內(nèi)存中,并且無(wú)法釋放。如果開(kāi)發(fā)人員忽略注銷(xiāo)事件,將導(dǎo)致嚴(yán)重的內(nèi)存泄漏。