老师问一个问题

来源:17-1 异步和单线程-什么是异步

qq_爱非坚持_0

2017-09-05

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

        setTimeout(function () {

        document.write("i =", i + "<br>");

        }, 0);

    };

为何这段代码会连续输出三个  i = 4;

i =4
i =4
i =4

写回答

3回答

双越

2017-09-05

类似问题视频中都讲过,就是10个链接,点击弹出对应数字的那个例子,跟这个一样

1
1
qq_爱非坚持_0
非常感谢!
2017-09-06
共1条回复

ayoualing

2017-09-06

因为调用了3次setTimeout

1
0

qq_爱非坚持_0

提问者

2017-09-05

i  = 4 这个可以理解,我把for循环里的 var 换成是let就可以一次输出1 2 3。我的理解是应该只输出一个i = 4;但是为啥会输出3个i = 4 呢?这点不理解?麻烦老师帮我具体解析一下。感谢!

0
0

BAT大牛带你横扫初级前端JavaScript面试(第二版)

BAT高级前端工程师亲授,结合真实面试题,提高面试成功几率

4268 学习 · 817 问题

查看课程