熟悉传统语言(C)的开发人员可能都遇到过编译错误(compiler error)或者运行时错误(runtime exception),例如 “除以0”。然后在 JavaScript 中上例的结果为 Infinity
var a = 1/0; // Infinity var a = -1/0; // -Infinity
如果除法运算中的一个操作数为负数,则结果为 -Infinity。JavaScript 使用有限数字表示法,和纯粹的数学运算不同,JavaScript 的运算结果有可能溢出,此时结果为 Infinity 或者 -Infinity
var a = Number.MAX_VALUE; // 1.798e+308 a + a; // Infinity
计算结果一旦溢出为无穷数,就无法得到有穷数。换句话说,你可以从有穷到无穷,但无法从无穷回到有穷。
也许有人会问无穷除以无穷会得到什么结果?会不会是1或者无穷?可惜都不是,从数学和 JS 语言的角度来说,Infinity/Infinity 是一个为定义操作,结果为 NaN
有穷整数除以 Infinity,结果为 0 。有穷负数除以 Infinity,结果为 -0