1、什么是閉包
閉包,官方對(duì)閉包的解釋是:一個(gè)擁有許多變量和綁定了這些變量的環(huán)境的表達(dá)式(通常是一個(gè)函數(shù)),因而這些變量也是該表達(dá)式的一部分。
簡(jiǎn)單的說(shuō),Javascript允許使用內(nèi)部函數(shù)---即函數(shù)定義和函數(shù)表達(dá)式位于另一個(gè)函數(shù)的函數(shù)體內(nèi)。而且,這些內(nèi)部函數(shù)可以訪問(wèn)它們所在的外部函數(shù)中聲明的所有局部變量、參數(shù)和聲明的其他內(nèi)部函數(shù)。當(dāng)其中一個(gè)這樣的內(nèi)部函數(shù)在包含它們的外部函數(shù)之外被調(diào)用時(shí),就會(huì)形成閉包。
閉包的特點(diǎn)
1 函數(shù)嵌套函數(shù)
2 函數(shù)內(nèi)部可以引用外部的參數(shù)和變量
3 參數(shù)和變量不會(huì)被垃圾回收機(jī)制回收
一般函數(shù)執(zhí)行完畢后,局部活動(dòng)對(duì)象就被銷毀,內(nèi)存中僅僅保存全局作用域。但閉包的情況不同!
function fn(){var a = ;function fn(){//可以訪問(wèn)fn中定義的a值alert( a++ );}fn();}fn(); //fn(); // function fn(){var a = ;function fn(){//可以訪問(wèn)fn中定義的a值 alert( a++ );}return fn;//}var f = fn();f(); // 執(zhí)行完后a還在內(nèi)存中f(); //f = null; //a被回收 以上所述是小編給大家介紹JavaScript中的閉包,希望對(duì)大家有所幫助!



















