【发布时间】:2015-05-15 22:04:11
【问题描述】:
为什么浏览器会挂起执行这个?
for(var i= 9007199254740993;i<9007199254740994;i++) {
console.log(i);
}
【问题讨论】:
-
因为为什么有人要溢出?
-
因为那些整数大得离谱。
标签: javascript integer-overflow
为什么浏览器会挂起执行这个?
for(var i= 9007199254740993;i<9007199254740994;i++) {
console.log(i);
}
【问题讨论】:
标签: javascript integer-overflow
您尝试使用的整数大于 2^53。 JavaScript 不能精确地表示这些整数。让我们看一下控制台:
> var i = 9007199254740993;
undefined
> i++
9007199254740992
> i++
9007199254740992
> i++
9007199254740992
...
如您所见,由于精度损失,i 的值没有变化,因此条件将始终为true,从而导致无限循环。
【讨论】:
9007199254740991结束。