閉包終極函式 搞懂這個你就明白什麼是閉包了
阿新 • • 發佈:2020-10-22
閉包就是能夠讀取其他函式內部變數的函式,在本質上是函式內部和函式外部連結的橋樑。不會觸發垃圾回收機制
如果函式作為引數傳遞 或者 返回值是一個函式 一般都是閉包
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=2var d2 = fun(0).fun(1);//undefined 0 d2.fun(2);//1 d2.fun(3);//1