老师,请帮我详细解释一下这个问题
来源:1-16 定时器 setTimeout
慕哥2455504
2019-09-19 17:47:46
为什么打印结果是55555
我的理解是:虽然setTimeout的code段是要被放到异步队列中,但是为什么是等到i等于5的时候,才是5s过后呢?
1回答
同学你好,
因为定时器是异步的,for循环是同步的,所以for循环会先执行完毕,循环停止的条件的就是i等于5的时候,所以循环执行完毕后i的值为5 。
定时器可以理解为是这样的:
输出i值,当前作用域中没有i值,就会沿着作用域向上找,找到的就是循环完毕后的i值5 。所以每次输出的i值为5 。
自己可以测试理解下,祝学习愉快!
相似问题