就是指一個(gè)函數(shù)內(nèi)部也有限權(quán)訪問(wèn)另一個(gè)函數(shù)內(nèi)部的變量
舉個(gè)例子:
var a = {
"a1":3,
"a2":function(data){
return this.a1*data
}
}
console.log(a.a2(3))? //9
好處
①保護(hù)函數(shù)內(nèi)的變量安全 鞠呈,實(shí)現(xiàn)封裝嗅回,防止變量流入其他環(huán)境發(fā)生命名沖突
②在內(nèi)存中維持一個(gè)變量证舟,可以做緩存(但使用多了同時(shí)也是一項(xiàng)缺點(diǎn)搪柑,消耗內(nèi)存)
③匿名自執(zhí)行函數(shù)可以減少內(nèi)存消耗
壞處
①其中一點(diǎn)上面已經(jīng)有體現(xiàn)了匹表,就是被引用的私有變量不能被銷毀并徘,增大了內(nèi)存消耗掠兄,造成內(nèi)存泄漏晌纫,解決方法是可以在使用完變量后手動(dòng)為它賦值為null昼榛;
②其次由于閉包涉及跨域訪問(wèn)境肾,所以會(huì)導(dǎo)致性能損失,我們可以通過(guò)把跨作用域變量存儲(chǔ)在局部變量中胆屿,然后直接訪問(wèn)局部變量奥喻,來(lái)減輕對(duì)執(zhí)行速度的影響