閉包最簡單易懂的解釋

閉包,英文 Closure

集合論裏的閉包,指的是對集合成員進行某些操作時,結果也是集合的成員,那麼這個集合對這個操作就是閉包。比如整數集合對 加減法來說就是閉包。

Closure

編程裏的閉包,指的是一個函數和它所需的環境,被整個打包進另一個函數,在其內部形成一個獨立的作用域,下面就是一個JS中最簡單的閉包:

function f1()
{
    var n = 999; //n在f1內部定義,與外界無關 var表示這不是全局變量
    function f2()
    {
        n++;
        alert(n);
    } 
    return f2; 
}

當在外部將 f1 返回值賦給一個變量之後,因爲該變量的存在,f1 和其內部的 n 會一直存在於內存之中,不會被銷燬,這個外部變量代表一個完整而獨立的作用域,和集合論的閉包有一定相似:

var result = f1(); 
result(); //輸出1000 
result(); //輸出1001 變量n一直保存在內存中,並沒有在f1調用結束後被自動清除。
n = 10008;
result(); //輸出1002 變量n不受外界影響

 

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