Skip to content

输出是什么?

Posted on:2023年12月18日 at 20:40
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 的回调函数是异步执行的。

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

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

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

原文转自:https://fe.ecool.fun/topic/c3f69ef3-ab4e-456f-869f-3e6ef470d0f3