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