const foo = () => console.log("First");
const bar = () => setTimeout(() => console.log("Second"));
const baz = () => console.log("Third");
bar();
foo();
baz();
输出的顺序将会是:
First
Third
Second
这是因为在这段代码中,bar()
函数包含了一个 setTimeout
,它会在一定时间后执行回调函数。而在这段代码中,setTimeout
的回调函数是异步执行的。
以下是代码执行的详细步骤:
- 调用
bar()
,它启动了一个计时器,并注册了一个在计时结束后执行的回调函数。 - 然后调用
foo()
,它会立即打印出'First'
。 - 接着调用
baz()
,它会立即打印出'Third'
。 - 当计时器结束后,回调函数被执行,打印出
'Second'
。
由于 setTimeout
是异步的,所以在执行完 foo()
和 baz()
后,会先打印出它们的输出,然后再执行 setTimeout
的回调函数并打印出 'Second'
。