|
|
|
|
// 5 5 5 5 5 开始输出一个 5,然后每隔一秒再输出一个 5,一共 5 个 5
|
|
// 0 1 2 3 4 闭包,内部对 i 保持引用
|
|
// 5 5 5 5 5 内部没有对i引用
|
|
// 0 1 2 3 4 立即执行函数
|
|
这道题应该考察 JavaScript 的运行机制的,让我理一下思路。
首先先碰到一个 setTimeout,于是会先设置一个定时,在定时结束后将传递这个函数放到任务队列里面,因此开始肯定不会输出 1 。
然后是一个 Promise,里面的函数是直接执行的,因此应该直接输出 2 3 。
然后,Promise 的 then 应当会放到当前 tick 的最后,但是还是在当前 tick 中。
因此,应当先输出 5,然后再输出 4 。
最后在到下一个 tick,就是 1 。
“2 3 5 4 1”