javascript - 在 for 循环中使用 SetTimeOut
问题描述
我最近提出了一个问题,要求查找这两个代码片段的输出:
第一:let i;
for (i = 0; i <= 4; i++) {
setTimeout(() => {
console.log(i);
}, 0);
}
for (let i = 0; i <= 4; i++) {
setTimeout(() => {
console.log(i);
}, 0);
}
我熟悉事件循环的工作原理。在setTimeout中的每个迭代回调函数在等待 0 毫秒后被添加到任务队列中。只要调用堆栈为空,就会触发这些回调函数。
但是两个代码片段都给出了不同的结果。
帮助我解释为什么他们给出不同的结果。
解决方案
推荐阅读
- java - 如果第一个集群使用java出现故障,如何将消息推送到第二个kafka集群主题
- python - Django:无值行为的奇怪过滤数据库
- python - 删除最后一次出现的增量
- php - 向下舍入 2 位小数 php
- nginx - Nginx:如何将 2 个特定端口反向代理到具有相同 server_name 的另一个特定端口?
- c# - System.Text.Json 的原始属性
- java - Volley GET JsonObjectRequest 未按顺序执行,响应稍后到达
- php - 找不到类“App\Http\Controllers\Auth\GuzzleHttp\RequestOptions”
- javascript - 向外部服务器发送 POST 请求时,Node 给我一个“证书链中的自签名证书”错误
- python - logits 和 labels 必须具有相同的第一维,得到 logits 形状 [32,1] 和标签形状 [80000]