Javascript 閉包詳解

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

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

js垃圾回收

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

全局變量 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,實現了局部變量累加了。

//閉包會使變量始終保存在內存中,若是使用不當會增大內存消耗。
相關文章
相關標籤/搜索