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

for循环与闭包

for循环与闭包

开心每一天1111 2018-11-15 14:10:32
for(var i=1;i<5;i++){setTimeout(function(){console.log(i)},i*1000);}在这里for循环是先完成的然后i的值已经变成了5那for循环是先执行完的 那i*1000为什么会执行呢
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

for循环执行完时相当于在页面中写了4个定时器函数,此时定时器函数还未执行,全局中的i变量值为5;当定时器时间到的时候依次执行定时器函数,依次打印出4个5。

这个例子并不是闭包,闭包需要这样写,相当于在页面中写了四个立即执行函数,这四个函数接收到的实参依次为1,2,3,4,根据闭包的特性当定时结束时定时器函数可以访问到其外层函数接收到的实参,所以会依次打印出1,2,3,4

    for(var i=1;i<5;i++){

        (function(i){

            setTimeout(function(){console.log(i)},i*1000);

        })(i)

    }


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

添加回答

举报

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