萌新向大佬们请教个问题,下面这个是闭包吗?
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