javascript - 为什么while循环中的setTimeout会按顺序递增?
问题描述
面试的时候有一个问题。我只是不明白为什么会打印 5 6 7 8 9 ...
let i = 0;
while (i < 5) {
setTimeout(() => {
console.log(i++);
}, 0);
i++;
}
解决方案
这是因为 setTimeout() 函数。即使它延迟了0秒。这将降低它在处理器中的优先级。setTimeout 函数中的所有 5 个操作都将在 while 循环之后运行。因为在它的最后我是5。所以它记录并在那之后递增......
推荐阅读
- c# - 如何将我的 gridview 数据传输到另一个 aspx 页面?
- kubernetes - Kubernetes 入口(hostNetwork=true),无法通过节点 IP 访问服务 - GCP
- azure - 如何使用 PowerShell 在 Azure 中列出指标警报
- php - '/../vendor/autoload.php' 在 php 中的含义
- asp.net-mvc - ASP.NET MVC - 如果布尔属性设置为 false,则更改表的 BG 颜色
- android - 如何修复 WindowManager$BadTokenException
- jsf - JSF PrimeFaces 多数据表关于单视图排序 NPE 焦点问题
- javascript - 在 contenteditable 元素中将插入符号移到末尾,并将文本移到末尾
- c++ - Why is there runtime-error? I have already set long int
- typescript - 基于参数推断返回类型