for(let i=0;i<2;i++){ setTimeout(function(){ console.log(i) },100); } for(var i=0;i<2;i++){ setTimeout(function(){ console.log(i) },100); }
0 1 2 2
0 1 0 1
0 1 1 1
1 1 0 0
let作用域for循环时会绑定i状态值,所以定时器触发后,分别输出的是0,1两个值。var变量for循环时不会绑定i状态值,当i=1时,i<2成立,此时i++,i的值变成2,所以定时器触发后,分别输出的是2,2。
这个题有问题🤨第二个题应该是输出1,1吧
循环结束的时候i=2, settionmout执行conso.log(i)
for(var i=0;i<2;i++){ setTimeout(function(i){ console.log(i) }(i),100); }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题