萌新向大佬们请教个问题,下面这个是闭包吗?
javascript吧
全部回复
仅看楼主
level 1
2020年07月09日 04点07分 1
level 3
还隔着玩闭包[滑稽],这年头都改用let了,好久没用,这个函数我也不好判断,不过这个格式看起来确实是闭包
2020年07月09日 04点07分 2
[滑稽]
2020年07月09日 07点07分
@维生素之祖 这个确实是闭包 [滑稽]
2020年08月13日 10点08分
@维生素之祖 简单的说 函数套函数 内部函数被外部引用了 本来fn1函数return之后就要对局部变量进行销毁的 但是因这原因被保存下来了 你在内部函数里面写console.log(i) 在知道定时器的执行方式 你会发现可以访问fn1函数局部变量i [滑稽]
2020年08月13日 10点08分
@维生素之祖 你也可以看看javascript权威指南里的闭包 那里解答的比较详细 [乖]
2020年08月13日 10点08分
level 4
你闭了个锤子,你缩小作用域的变量是哪个。
var a = 0;
(function(a){
console.log(a)
})(a)
a = 4;
打印为0;
这才是闭包
2020年07月09日 09点07分 4
大佬,不好意思哈,我纯小白。如果在开头加一句var i=10; 那如果不是闭包的话,执行定时器回调函数的时候实参i不就都成10了吗?那输出就应该是4个10、4个10的不停输出?但事实它还是0123、0123的不停输出,有点懵[委屈]
2020年07月09日 11点07分
我眼瞎 你最后传参了。
2020年07月11日 01点07分
level 4
你把上述的console.log 改成 settimeout(function(){console.log(a)},5000);
一样打印0
不会因为a=4而发生改变。
2020年07月09日 09点07分 5
level 2
这是闭个锤子的包
2020年08月14日 02点08分 7
1