Infinity

js/infinity2026-10-29 11:03:47

全局属性 Infinity 是一个数值,为 Number 类型,表示无穷大。Infinity(正无穷大)大于任何值。

Infinity 是全局对象(global object)的一个属性,即它是一个全局变量。

Infinity 的初始值是 Number.POSITIVE_INFINITY。

产生 Infinity 的操作

当运算超出 Number 类型所能表示的范围或者除以 0 时,会产生 Infinity,例如:

console.log(Infinity); /* Infinity */
console.log(Infinity + 1); /* Infinity */
console.log(Math.pow(10, 1000)); /* Infinity */
console.log(Math.log(0)); /* -Infinity */
console.log(1 / Infinity); /* 0 */
console.log(1 / 0); /* Infinity */

Number.POSITIVE_INFINITY 和 Number.NEGATIVE_INFINITY

Number.POSITIVE_INFINITY 静态数据属性表示正无穷大值。Number.NEGATIVE_INFINITY 静态数据属性表示负无穷值。

Number.POSITIVE_INFINITY 和 Number.NEGATIVE_INFINITY 的表现同数学上的无穷大略有不同(以 Number.POSITIVE_INFINITY 为例):

  • 任何正值,包括 POSITIVE_INFINITY,乘以 POSITIVE_INFINITY 等于 POSITIVE_INFINITY。
  • 任何负值,包括 NEGATIVE_INFINITY,除以 POSITIVE_INFINITY 等于 NEGATIVE_INFINITY。
  • 任何正数除以 POSITIVE_INFINITY 都是正零(正如 IEEE 754 中所定义的)。
  • 任何负数除以 POSITIVE_INFINITY 都是负零(正如 IEEE 754 中所定义的)。
  • 零乘以 POSITIVE_INFINITY 等于 NaN。
  • NaN 乘以 POSITIVE_INFINITY 等于 NaN。
  • POSITIVE_INFINITY,除以任何负值(除了 NEGATIVE_INFINITY)都等于 NEGATIVE_INFINITY。
  • POSITIVE_INFINITY,除以任何正值(除了 POSITIVE_INFINITY)都等于 POSITIVE_INFINITY。
  • POSITIVE_INFINITY,除以 NEGATIVE_INFINITY 或 POSITIVE_INFINITY,都等于 NaN。
  • Number.POSITIVE_INFINITY > x 对于任何不是 POSITIVE_INFINITY 的数字 x 都为真。

判断有限数

全局 isFinite() 函数用来判断被传入的参数值是否为一个有限数(finite number)。在必要情况下,参数会首先转为一个数值。如果参数是 NaN,正无穷大或者负无穷大,会返回 false,其他返回 true。

isFinite(Infinity); // false
isFinite(NaN); // false
isFinite(-Infinity); // false

isFinite(0); // true
isFinite(2e64); // true
isFinite(null); // true,在更强壮的 Number.isFinite(null) 中将会得到 false

isFinite("0"); // true,在更强壮的 Number.isFinite("0") 中将会得到 false

Number.isFinite() 静态方法判断传入值是否是一个有限数——也就是说,它检查给定值是一个数字,且该数字既不是正的 Infinity,也不是负的 Infinity 或 NaN。

与全局 isFinite() 函数相比,此方法不会先将参数转换为数字,这意味着只有类型为数字且为有限数的值才返回 true,而非数字的值始终返回 false。

Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(-Infinity); // false

Number.isFinite(0); // true
Number.isFinite(2e64); // true

Number.isFinite(null); // false
Number.isFinite("0"); // false

参考

Infinity
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Infinity

Number.POSITIVE_INFINITY
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY

Number.NEGATIVE_INFINITY
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY

isFinite()
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/isFinite

Number.isFinite()
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite

本页目录