有关闭包的问题
基本上每次面試都會(huì)遇到這個(gè)問(wèn)題,什么是閉包?為什么要使用閉包?哎。。。。。
?
閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。
?
function f1(){
var a = 3;
function f2(){
var b = 4;
alert(a+b) ? //7
}
return f2()
}
f1()
?
閉包可以用在許多地方。它的最大用處有兩個(gè),1.可以讀取函數(shù)內(nèi)部的變量,2.讓這些變量的值始終保持在內(nèi)存中,不會(huì)在f1調(diào)用后被自動(dòng)清除
?
使用閉包應(yīng)該注意:
(1)由于閉包會(huì)使得函數(shù)中的變量都被保存在內(nèi)存中,內(nèi)存消耗很大,所以不能濫用閉包,否則會(huì)造成網(wǎng)頁(yè)的性能問(wèn)題,在IE中可能導(dǎo)致內(nèi)存泄露。解決方法是,在退出函數(shù)之前,將不使用的局部變量全部刪除。
(2)閉包會(huì)在父函數(shù)外部,改變父函數(shù)內(nèi)部變量的值。所以,如果你把父函數(shù)當(dāng)作對(duì)象(object)使用,把閉包當(dāng)作它的公用方法(Public Method),把內(nèi)部變量當(dāng)作它的私有屬性(private value),這時(shí)一定要小心,不要隨便改變父函數(shù)內(nèi)部變量的值。
轉(zhuǎn)載于:https://www.cnblogs.com/lxiaoyun/p/10574308.html
總結(jié)
- 上一篇: 恶意软件盯上了加密货币,两家以色列公司受
- 下一篇: [集合]线程安全的HashMap