Skip to content

输出是什么?

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 的回调函数是异步执行的。

以下是代码执行的详细步骤:

  1. 调用 bar(),它启动了一个计时器,并注册了一个在计时结束后执行的回调函数。
  2. 然后调用 foo(),它会立即打印出 'First'
  3. 接着调用 baz(),它会立即打印出 'Third'
  4. 当计时器结束后,回调函数被执行,打印出 'Second'

由于 setTimeout 是异步的,所以在执行完 foo()baz() 后,会先打印出它们的输出,然后再执行 setTimeout 的回调函数并打印出 'Second'