首页 > 解决方案 > 事件循环在 Javascript 中是如何工作的?

问题描述

const eventLoop = () => {
  console.log("Start");
  setTimeout(() => console.log("Settimeout"), 0)
  console.log("End");
}

eventLoop();

输出:开始结束设置超时

但对于

const eventLoop = () => {
  console.log("Start");
  setTimeout(console.log("Settimeout"), 0)
  console.log("End");
}

eventLoop();

输出:开始设置超时结束

请帮助我理解上述场景中的 JS 执行堆栈和事件循环

标签: javascriptwebapievent-loop

解决方案


您是否console.log()在开发人员工具中执行过?

我觉得第一次很混乱。它与这个问题有很多关系。

console.log("Hello, World!");
// returns undefined

这是一种undefined带有副作用的表达式返回。

const eventLoop = () => {
  console.log("Start");
  setTimeout(console.log("Settimeout"), 0)
  console.log("End");
}

eventLoop();

console.log("Settimeout")上面代码中的表达式在调用 setTimeout 函数之前立即执行。

因此,它与事件循环无关。


推荐阅读