老师,请帮我详细解释一下这个问题

来源:1-16 定时器 setTimeout

慕哥2455504

2019-09-19 17:47:46


http://img.mukewang.com/climg/5d834e4608ec67a710800416.jpg
为什么打印结果是55555
我的理解是:虽然setTimeout的code段是要被放到异步队列中,但是为什么是等到i等于5的时候,才是5s过后呢?

写回答

1回答

好帮手慕星星

2019-09-19

同学你好,

因为定时器是异步的,for循环是同步的,所以for循环会先执行完毕,循环停止的条件的就是i等于5的时候,所以循环执行完毕后i的值为5 。

定时器可以理解为是这样的:

http://img.mukewang.com/climg/5d83559809da440c03310470.jpg

输出i值,当前作用域中没有i值,就会沿着作用域向上找,找到的就是循环完毕后的i值5 。所以每次输出的i值为5 。

自己可以测试理解下,祝学习愉快!

0

0 学习 · 40143 问题

查看课程