1 定义与性质
它表示无穷大数值[1]。
它的性质:
- 它比机器能表示的最大值要大,具体是多少,不知道[2];
- 它分为两种,正无穷
Infinity或+Infinity,和负无穷-Infinity; - 它是全局属性,
我们可以通过下面代码来理解它的含义:
typeof Infinity; // => 'number'
typeof -Infinity; // => 'number'
// 正无穷 和 负无穷
Number.POSITIVE_INFINITY; // => Infinity
Number.NEGATIVE_INFINITY; // => -Infinity
window.Infinity; // => Infinity
在 JS 中,Number.MAX_VALUE 表示最大浮点数;Number.MAX_SAFE_INTEGER 是最大的整数;
Infinity > 1000000000; // => true
Infinity > Number.MAX_SAFE_INTEGER; // => true
Infinity > Number.MAX_VALUE; // => true
2 应用
2.1 运算
与之运算,结果是无穷的情况。
Infinity + 1; // => Infinity
Infinity - 1000000000; // => Infinity
Infinity / 1000000000; // => Infinity
Infinity * 0.00000005; // => Infinity
与之运算,结果不是无穷的情况。
1 / Infinity; // => 0
某些运算,会出现无穷的情况。
1 / 0; // => Infinity
Math.log(0); // => -Infinity
Math.pow(10, 1000); // => Infinity ,超出了最大可表示数值
2.2 判断
在 JS 中,无穷与无穷等价。可通过函数 Number.isFinite 判断一个数值是否是有穷数。
Infinity === Infinity; // => true
-Infinity === -Infinity; // => true
Number.isFinite(Infinity); // => false
Number.isFinite(-Infinity); // => false
Number.isFinite(999); // => true
2.3 注意点
- 序列化时,
Infinity变成null;
JSON.stringify({ a: Infinity }); // => '{"a":null}'
- 解析数据时,'Infinity' 解析结果不一;
JSON.parse('{ "a": Infinity }'); // => error
JSON.parse('{ "a": "Infinity" }'); // => {a: 'Infinity'}
parseFloat('Infinity'); // => Infinity
parseInt("Infinity", 10); // => NaN
- 取到数组中最大值最小值时,空数组出现无穷数
Math.max(...[1, 2, 3]); // => 3
Math.max(...[]); // => -Infinity
Math.min(...[1, 2, 3]); // => 1
Math.min(...[]); // => Infinity
参考资料:
[1] Infinity