这是由语言定义的吗?有确定的最大值吗?在不同的浏览器中是否有所不同?


当前回答

Try:

maxInt = -1 >>> 1

在Firefox 3.6中是2^31 - 1。

其他回答

要用于位操作的任何值必须在0x80000000(-2147483648或-2^31)和0x7fffffff(2147483647或2^31 - 1)之间。

控制台会告诉您0x80000000等于+2147483648,但是0x80000000 & 0x80000000等于-2147483648。

为了安全

var MAX_INT = 4294967295;

推理

我认为我应该聪明一点,用更实用的方法找到x + 1 === x的值。

我的机器每秒只能计算1000万次左右……所以我会在28.56年后给出确切的答案。

如果你等不了那么久,我敢打赌

大多数循环都不会持续28.56年 9007199254740992 ===数学。Pow(2,53) + 1是足够的证明 您应该坚持使用4294967295,即Math.pow(2,32) - 1,以避免预期的位移位问题

求x + 1 === x:

(function () {
  "use strict";

  var x = 0
    , start = new Date().valueOf()
    ;

  while (x + 1 != x) {
    if (!(x % 10000000)) {
      console.log(x);
    }

    x += 1
  }

  console.log(x, new Date().valueOf() - start);
}());

在JavaScript中,有一个数字叫做Infinity。

例子:

(Infinity>100)
=> true

// Also worth noting
Infinity - 1 == Infinity
=> true

Math.pow(2,1024) === Infinity
=> true

对于这个主题的一些问题,这可能已经足够了。

Try:

maxInt = -1 >>> 1

在Firefox 3.6中是2^31 - 1。

在谷歌Chrome内置javascript,你可以去大约2^1024之前的数字被称为无穷大。