function fun (n , o){
console.log(o);
return {
fun: function (m){ //上下两个fun完全不是一个东西
return fun(m, n); //在此位置形成闭包,内部变量n,在函数执行结束时内部变量没有被销毁,被保存下来了
}
}
}
var a = fun(0);//--------->>打印undefined,由a接收返回值,返回 a=fun(m,0)
a.fun(1);//--------->>打印0, 无人接收返回值 a依旧是原来的值 a = fun(m,0)
a.fun(2);//--------->>打印0, 无人接收返回值 a依旧是原来的值 a = fun(m,0)
a.fun(3);//--------->>打印0, 无人接收返回值 a依旧是原来的值 a = fun(m,0)
var b = fun(0).fun(1).fun(2).fun(3);
//--------->>打印undefined,由a接收返回值,返回 a=fun(m,0)
//--------->>打印0,由a接收返回值,返回 a=fun(m,1)
//--------->>打印1,由a接收返回值,返回 a=fun(m,2)
//--------->>打印2,由a接收返回值,返回 a=fun(m,3)
var c = fun(0).fun(1); //undefined,0
c.fun(2);//1
c.fun(3);//2
9.15 闭包的连续调用
最新推荐文章于 2022-04-18 14:52:00 发布