Javascript 閉包詳解

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

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

js垃圾回收

在javascript中,如果一個對象不再被引用,那麼這個對象就會被GC回收;(Garbage Collection),計算機科學中一種自動釋放不再被使用的內存空間的機制。
如果兩個對象互相引用,而不再被第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();  //函數賦值給變量
plus();        //plus函數調用一次,結果爲1,相當於testCount()();
plus();        //plus調用第二次,結果爲2,實現了局部變量累加了。

//閉包會使變量始終保存在內存中,如果使用不當會增大內存消耗。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章