javascript - 事件循环在 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 执行堆栈和事件循环
解决方案
您是否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 函数之前立即执行。
因此,它与事件循环无关。
推荐阅读
- python - 将训练语料库提供给 train_new_from_iterator 方法时的关键错误
- python - 当我将函数应用于 DF 以创建多个新列时,我会得到不同的结果,具体取决于我提交的 DF 中有多少行
- sql - 在表中的行之间插入数据
- java - Mapstruct:为枚举转换生成的 Impl 类中的代码太大错误
- mysql - oracle查询中的重复项
- python - 如何使用 kafka-python 检查消费者组中的活跃消费者数量?
- lua - 如何在 Lua 中 os.date() 生成的日期中添加天数
- grep - 使用 grep 获取特定行
- javascript - 如何从获取的结果中创建新对象?
- react-native - 我如何处理帖子,比如在 React Native 中使用实时数据库?