闭包最简单易懂的解释

闭包,英文 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不受外界影响

 

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