for(var i=0;i<5;++i){ setTimeout(function(){ console.log(i+ ' '); },100); }
5 5 5 5 5
0 0 0 0 0
0 1 2 3 4
1 2 3 4 5
for(var i=0;i<5;++i){ (function(i){ setTimeout(function(){alert(i+ ' ');},100); })(i) } 0,1,2,3,4 for(var i=0;i<5;++i){ setTimeout(function(){alert(i+ ' ');},100); } 5,5,5,5,5
來自 https://segmentfault.com/q/1010000004335132/a-1020000004335177
++i与i++,理解了就知道如何解答了。
a
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
来源:牛客网
更加详细的解释:注意理解困难的根本原因就是在循环的过程中,匿名函数根本就没有立即执行,证明的方法很简单,就是在匿名函数的后面加上(),输出结果会很明朗01234。正因为没有立即执行,所以在循环的过程中,匿名函数没有及时访问到每一个变量,这样外部函数循环完成之后,匿名函数才执行开始访问外部函数的变量,而这时变量的值早已成为最后一个