1. 程式人生 > 實用技巧 >閉包終極函式 搞懂這個你就明白什麼是閉包了

閉包終極函式 搞懂這個你就明白什麼是閉包了

閉包就是能夠讀取其他函式內部變數的函式,在本質上是函式內部和函式外部連結的橋樑。不會觸發垃圾回收機制

如果函式作為引數傳遞 或者 返回值是一個函式 一般都是閉包

 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