深入理解js閉包
1.1 閉包:有權(quán)在一個(gè)函數(shù)內(nèi)部可以訪問另一個(gè)函數(shù)作用域并且將此函數(shù)返回
2.1 js中變量的作用域分為兩種,全局變量和局部變量,簡(jiǎn)單來(lái)說(shuō),除了函數(shù)中定義的變量是局部變量外须板,其他的都是全局變量胳赌。
3.1 可以在函數(shù)外面訪問函數(shù)里面的變量
3.2 可以保存函數(shù)中的變量值萝喘,不用擔(dān)心調(diào)用函數(shù)時(shí)變量變化酥诽。
4.1 在函數(shù)外部訪問函數(shù)內(nèi)的變量鞍泉,由于訪問不到,所以要變通來(lái)訪問函數(shù)中的變量肮帐,這種方法叫做閉包咖驮。
function a(){
var b=6;
console.log(b)//6
}
console.log(b);//error 訪問不到b的值
4.2解決方法:可以函數(shù)中套用函數(shù),將套用的函數(shù)作為返回值训枢。由外部接收返回值托修,接收到的數(shù)值就是內(nèi)部變量的變量值(函數(shù)中的子函數(shù)可以訪問到父函數(shù)的變量值。)
function a(){
var b=6;
console.log(b)//6
function c(){
console.log(b)//6
};
c();
return function c(){
return b;
};
}
var e=a();
console.log(e());//6
5.1由于閉包會(huì)使得函數(shù)中的變量被保存到內(nèi)存中恒界,這樣很消耗內(nèi)存睦刃,所以一定要注意不能隨便用閉包。但是可以在退出函數(shù)之前十酣,釋放不使的局部變量娜汁,以清理內(nèi)存落剪,保證瀏覽器性能馍迄。