level 13
你的a和sum都是在obj这个closure里面的,不是每个fn各自的变量,你想要达到的效果得把a和sum放进fn函数里
2020年11月26日 23点11分
2
level 11
obj指向的是一个立即执行函数, 这个函数返回一个对象, 这个对象有fn1 fn2两个方法
所以最终obj = {
fn1:...,
fn2:....
}
但因为js的垃圾回收机制, 还在被使用的变量, 对象不会被立即销毁. 而fn1, fn2又引用了立即执行函数里的变量, 所以立即执行函数的上下文并没有被销毁, 也就是说sum一直存在, 但无法再从外部直接访问, 直到不再被引用为止.
这就是所谓的闭包
2020年11月27日 12点11分
3