为什么这个循环会冻结我的浏览器

Why this loop freezes my browser?

本文关键字:冻结 我的 浏览器 循环 为什么      更新时间:2023-09-26

为什么浏览器执行此操作时会挂起?

for(var i= 9007199254740993;i<9007199254740994;i++) {
    console.log(i);
}

您尝试使用的整数大于2^53。JavaScript不能精确地表示这些整数。让我们看一下控制台:

> var i = 9007199254740993;
undefined
> i++
9007199254740992
> i++
9007199254740992
> i++
9007199254740992
...

您可以看到,由于精度的损失,i的值不会改变,因此条件将始终是true,从而导致无限循环。