闭包终极函数 搞懂这个你就明白什么是闭包了

闭包就是能够读取其他函数内部变量的函数,在本质上是函数内部和函数外部链接的桥梁。不会触发垃圾回收机制

如果函数作为参数传递 或者 返回值是一个函数 一般都是闭包

 function fun(a,b) {
        console.log(b)
        return {
            fun: function(c) {
                return fun(c,a);
            }
        };
    }
    var d = fun(0); //undefined
    //a=0;b=undefined;返回一个函数fun: function(c) { return fun(c,a); }
    d.fun(1);//0
    //执行返回的函数fun(c,a);a=0;b=undeined =>c=1;a=0; => a=1;b=0;
    d.fun(2);//0
    //执行返回的函数fun(c,a);a=0;b=undeined =>c=2;a=0; => a=2;b=0;
    d.fun(3);//0
    //执行返回的函数fun(c,a);a=0;b=undeined =>c=3;a=0; => a=3;b=0;
    var d1 = fun(0).fun(1).fun(2).fun(3);//undefind;0 1 2
    //a=0;b=undeined =>c=1;a=0 =>a=1;b=0 =>c=2;a=1;=>a=2;b=1 => c=3;a=2 =>a=3,b=2
    var d2 = fun(0).fun(1);//undefined 0
    d2.fun(2);//1
    d2.fun(3);//1
原文地址:https://www.cnblogs.com/hy96/p/13857259.html