JS的閉包,聽起來很熟悉,而且基本上是面試必問的問題,那么什么是閉包呢?首先我們來看一段代碼:
function a(){
var num = 0;
return function(){
return ++num;
}
}
var b = a();//b=function(){return ++num};
console.log(b());//1
console.log(b());//2
console.log(b());//3
函數(shù)的作用域,不取決于運行時的環(huán)境,
而取決于函數(shù)聲明時的環(huán)境.
所以這里調(diào)用b(),num會加。
閉包的缺點:由于閉包會使得函數(shù)中的變量都被保存在內(nèi)存中,內(nèi)存消耗很大,所以不能濫用閉包,否則會造成網(wǎng)頁的性能問題,在IE中可能導致內(nèi)存泄露。解決方法是,在退出函數(shù)之前,將不使用的局部變量全部刪除。