Javascript 閉包詳解

閉包特性
函數(shù)嵌套函數(shù)
函數(shù)內(nèi)部可以引用外部的參數(shù)和變量
參數(shù)和變量不會被垃圾回收機制回收
閉包的作用

具體作用是有權訪問函數(shù)內(nèi)部的變量,最常見的就是函數(shù)內(nèi)部創(chuàng)建另一個函數(shù),通過另一個函數(shù)訪問這個函數(shù)的局部的變量。
缺點:就是常駐內(nèi)存,會增大內(nèi)存的使用量,使用不當會造成內(nèi)存泄露。
一般函數(shù)執(zhí)行完畢,局部活動對象就會被銷毀,內(nèi)存中僅僅保存全局作用域,但是閉包會長期駐扎在內(nèi)存。

js垃圾回收

在javascript中,如果一個對象不再被引用,那么這個對象就會被GC回收;(Garbage Collection),計算機科學中一種自動釋放不再被使用的內(nèi)存空間的機制。
如果兩個對象互相引用,而不再被第3者所引用,那么這兩個互相引用的對象也會被回收。

全局變量 count++ 累加
var count = 0;
function testCount(){
    count++;
    console.log(count);
}

testCount();//result 1
testCount();//result 2
局部變量++ 不累加
function testCount(){
    var count=0;
    count++;
    console.log(count);
}
testCount();//result 1
testCount();//result 1

//到這里會問玩毛線呢 這個我們懂 I know。 我只是想通過這兩個例子來說明閉包的用處和好處。
局部變量count++累加
function testCount(){
    var count=0;
    return function(){
        count++;
        console.log(count);
    }
}
var plus = testCount();  //函數(shù)賦值給變量
plus();        //plus函數(shù)調用一次,結果為1,相當于testCount()();
plus();        //plus調用第二次,結果為2,實現(xiàn)了局部變量累加了。

//閉包會使變量始終保存在內(nèi)存中,如果使用不當會增大內(nèi)存消耗。
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容