JavaScript:为什么这会导致一个无限循环

JavaScript: Why is this causing an infinite loop?

本文关键字:一个 无限循环 为什么 JavaScript      更新时间:2023-09-26

我正试图通过找到JavaScript数字行环绕的点来找到最大的数字。例如,如果它只能容纳数字0, 1, 127,那么我会使用"127 + 1 = 0"来找到127。所以我做了一个函数

function getLargestNumber ( ) 
{
   var somethingBig = 12939123, last = (somethingBig - 1);
   while ( ++somethingBig > ++last );
   return last;
}

但这会导致无限循环(或者由于其他原因导致浏览器崩溃)。

我的函数逻辑有什么问题吗?

JavaScript数字总是以浮点数字的形式存储,而不是像C中那样的整数。浮点数字不会像C整数那样"环绕"。

这可能会帮助您什么是JavaScript';一个数字在不丢失精度的情况下可以达到的最高整数值?

看起来while循环将永远运行,因为你总是在增加somethingBig和last,因此something比格总是更大:

while ( ++somethingBig > ++last );

我不确定你到底想实现什么,但这将是无限循环的原因。

希望这能有所帮助!