javascript 閉包

function a() { 
    var i = 0; 
    function b() { 
        alert(++i); 
    } 
    return b; 
} 
var c = a(); 
c();


這段代碼有兩個特點: 
函數b嵌套在函數a內部; 
函數a返回函數b。 


閉包有什麼作用和效果? 
簡而言之,閉包的作用就是在a執行完並返回後,閉包使得Javascript的垃圾回收機制GC不會收回a所佔用的資源,因爲a的內部函數b的執行需要依賴a中的變量。
在上面的例子中,由於閉包的存在使得函數a返回後,a中的i始終存在,這樣每次執行c(),i都是自加1後alert出i的值。 

那麼我們來想象另一種情況,如果a返回的不是函數b,情況就完全不同了。函數a和b互相引用但又不被外界打擾(被外界引用),因此a執行完後,函數a和b就會被GC回收。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章