开发者社区> 问答> 正文

关于js闭包的问题

for (var i=1;i<=5;i++){
        setTimeout(function () {
            console.log(i);
        },1000);
    }

为什么这么段代码最终的输出是5个6,而不是想要的1,2,3,4,5。
改成:

for (var i=1;i<=5;i++){
        setTimeout(function () {
            console.log(i);
        },0);
    }

输出的也还是5个6。。
为什么啊?

可以用生动形象的例子解释一下闭包吗?有点似懂非懂

展开
收起
a123456678 2016-03-11 11:26:44 1889 0
1 条回答
写回答
取消 提交回答
  • 没有把i传进去,异步处理后i都是6

    2019-07-17 18:58:48
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载