Infinity
(1)定义
Infinity表示“无穷”。除了0除以0得到NaN,其他任意数除以0,得到Infinity。
1 / -0 // -Infinity 1 / +0 // Infinity
上面代码表示,非0值除以0,JavaScript不报错,而是返回Infinity。这是需要特别注意的地方。
Infinity有正负之分。
Infinity === -Infinity // false Math.pow(+0, -1) // Infinity Math.pow(-0, -1) // -Infinity
运算结果超出JavaScript可接受范围,也会返回无穷。
Math.pow(2, 2048) // Infinity -Math.pow(2, 2048) // -Infinity
由于数值正向溢出(overflow)、负向溢出(underflow)和被0除,JavaScript都不报错,所以单纯的数学运算几乎没有可能抛出错误。
(2)运算规则
Infinity的四则运算,符合无穷的数学计算规则。
Infinity + Infinity // Infinity 5 * Infinity // Infinity 5 - Infinity // -Infinity Infinity / 5 // Infinity 5 / Infinity // 0
Infinity减去或除以Infinity,得到NaN。
Infinity - Infinity // NaN Infinity / Infinity // NaN
Infinity可以用于布尔运算。可以记住,Infinity是JavaScript中最大的值(NaN除外),-Infinity是最小的值(NaN除外)。
5 > -Infinity // true 5 > Infinity // false
(3)isFinite函数
isFinite函数返回一个布尔值,检查某个值是否为正常值,而不是Infinity。
isFinite(Infinity) // false isFinite(-1) // true isFinite(true) // true isFinite(NaN) // false
上面代码表示,如果对NaN使用isFinite函数,也返回false,表示NaN不是一个正常值。