闭包中的函数调用不知道结果如何得出

请教各位 为什么这个结果是注释后边的结果,需要具体思路,感谢
请教各位 为什么这个结果是注释后边的结果,需要具体思路,感谢

img

var a = fun(0)// console的是o 没传参数所以是undefined
此时a = fun(m) {return fun(m, n)}
在执行a方法的时候 相当于吧n传给了外部fun的o
a.fun(1); 在var a = fun(0) 的时候,n是0 执行的时候输出的是o 所以永久输出0

闭包的特点就是能记住外部的值

老弟,你在闹呢,先不说闭包不闭包的,
1.var a = fun(0); //undefined
fun 接收两个参数 你打印的是第二个参数哦o,参数是按值传递的,你没传第二个参数所以是undefind
2. a.fun(1) // 0
a.fun 犯了和上面同一个问题,你先把0传进去,这个时候函数内部 n就是0