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

JavaScript闭包

JavaScript闭包

慕勒3428872 2018-09-14 10:21:46
for (var i=1; i<=5; i++) {         (function(j) {             console.log( j);             console.log( new Date());             setTimeout( function timer() {                 console.log( j );                 console.log( new Date() );             }, j*1000 );         })( i );     }为什么间隔时间每次都是1s
查看完整描述

1 回答

?
UYOU

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

这和闭包没啥关系……纯粹是你对setTimeout()函数的理解有问题,或者说你不知道setTimeout()是异步的?

为啥每次间隔都是1s,那是因为你最开始用for循环的时候一股脑的全部把setTimeout()设定好了。总共5个延迟,第一个延迟1s,第二个延迟2s,第三个延迟3s……全都是相对于你的for运行的那一刻而言的,最后表现出来那当然是每间隔1秒输出一个喽。


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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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