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

settimeout()的问题的3个疑惑点

settimeout()的问题的3个疑惑点

万千封印 2018-10-19 11:14:42
直接附上代码:for (var i = 0; i < 5; i++) {   setTimeout((function(i) {     console.log(i);   })(i), i * 1000); }运行结果是立即输出0、1、2、3、4疑惑点:1:在setTimeout()里面的第一个参数赋予一个立即执行函数,setTimeout的延时就不起作用了,为什么不是每隔一秒依次输出0、1、2、3、4?2:为什么输出的不是5了,setTimeout执行的时候 for里面的i还没有变成5吗?不是setTimeout要在for执行完再执行的吗?可以跟下面这个做比较,下面这个函数我的第三个疑惑点是:为什么第二个参数里面的1000*i 里面的i不起作用,就是为什么不是每隔5秒输出呢,因为轮到settimeout执行时,i不是已经变成5了吗?for (var i = 0; i < 5; i++) {   setTimeout(function() {    console.log(i);   }, 1000 * i); }运行结束时每隔一秒输出一个5,一共5个5.希望有大牛帮忙解答这三个疑惑点,我理解的不是很到位,谢谢。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 538 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号