为了账号安全,请及时绑定邮箱和手机立即绑定

关于js for循环中的setTimeout()一个问题

关于js for循环中的setTimeout()一个问题

芜湖不芜 2018-08-16 15:10:46
这里面我知道结果输出得是5,可是为什么是4个5,js是单线程的,setTimeout()执行时for循环已经执行完毕,i++成为5,setTimeout()根据作用域链查找,输出i的结果是5,可是为什么是4个5,for循环不是已经执行完毕了吗?怎么会输出4个5。不太懂,麻烦大家解答一下,谢谢!for (var i = 1; i <= 4; i++) {             setTimeout(function () {                 console.log(i);              }, 1000)         }
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

我是闲来无聊,也不知道题主看了别人的回答是不是已经明白了。
1.for循环执行了四次,所以循环体的代码实际上被运行四次,所以是打印四次。
2.setTimeout(code,ms)指在ms毫秒后执行code代码。这里是一秒,在一秒内for 循环肯定是运行完了,此时i已经被赋值为5,当刚好一秒的时候运行code代码,这里打印变量i,所以打印的结果是5。
综上,打印4个5。

查看完整回答
反对 回复 2018-09-07
  • 1 回答
  • 0 关注
  • 779 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信