为什么这个循环会冻结我的浏览器?
Why this loop freezes my browser?
为什么浏览器挂起执行此操作?
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
,从而导致无限循环。
为什么浏览器挂起执行此操作?
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
,从而导致无限循环。