您好,登錄后才能下訂單哦!
1.為什么用閉包?
js變量的作用域:全局變量和局部變量
函數(shù)內(nèi)部是可以直接讀取全局變量的,而函數(shù)外部卻無(wú)法讀取函數(shù)內(nèi)部的局部變量,所以閉包的出現(xiàn)實(shí)際就是為了能在函數(shù)外部獲取函數(shù)內(nèi)部的局部變量。
2.什么是閉包?
function f1(){
var n=1;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result();
函數(shù)外部訪問(wèn)不到內(nèi)部變量?我們?cè)诤瘮?shù)f1內(nèi)部聲明函數(shù)f2,n相當(dāng)于f2的全局變量,所以f2是可以訪問(wèn)f1的局部變量,所以,我們將f2作為返回值return出來(lái),就可以在外部訪問(wèn)f1中的局部變量。
3.閉包的作用?
(1)可以讀取函數(shù)內(nèi)部的變量
(2)讓這些變量的值永遠(yuǎn)保存在內(nèi)存中。(實(shí)例中result其實(shí)是指向f2的,所以f2始終會(huì)在內(nèi)存中,而f2又是依賴于f1而存在的,所以f1也會(huì)一直處在內(nèi)存中不會(huì)被垃圾回收)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。