JavaScript中Infinity运算遵循IEEE 754标准:加减同号得同号无穷,异号得NaN;乘除传递符号并处理零与无穷交互;%和有特定规则如5%Infinity为5、Infinity0为1;需用isFinite等防护。

JavaScript 中的算术运算符对 Infinity(正无穷)和 -Infinity(负无穷)有明确定义的行为,不是报错,而是遵循 IEEE 754 浮点数标准。理解这些规则能避免意外结果,尤其在数值边界处理、除零检测或算法容错中很实用。
加减法与 Infinity 的组合
Infinity 参与加减时,多数情况仍保持无穷性,但需注意符号匹配和特殊抵消:
-
Infinity + Infinity→Infinity;-Infinity + (-Infinity)→-Infinity -
Infinity + (-Infinity)→NaN(意义未定义,相当于“∞ − ∞”,无确定值) -
Infinity - Infinity或-Infinity - (-Infinity)同样返回NaN - 有限数与 Infinity 相加:如
100 + Infinity→Infinity;-5 + (-Infinity)→-Infinity
乘除法中的 Infinity 表现
乘除运算会放大或传递无穷性,同时注意符号和零的交互:
-
Infinity * Infinity→Infinity;Infinity * (-Infinity)→-Infinity -
Infinity / Infinity→NaN(同“∞/∞”,不定式) -
Infinity / 0→Infinity;Infinity / -0→-Infinity(-0 在 JS 中存在,影响符号) -
5 / Infinity→0;-3 / -Infinity→0(非零有限数除以无穷得 0) -
0 * Infinity→NaN(经典不定式 “0 × ∞”)
取余(%)和幂运算(**)的特殊情况
取余和幂对 Infinity 有明确但易被忽略的结果:
立即学习“Java免费学习笔记(深入)”;
-
Infinity % 5→NaN(任何数对有限非零数取余,若被除数为 ±Infinity,结果为 NaN) -
5 % Infinity→5(因为5 = 0 × Infinity + 5,余数就是自身) -
Infinity ** 0→1(按数学约定,∞⁰ 视为 1) -
Infinity ** 2→Infinity;Infinity ** 0.5→Infinity -
0 ** Infinity→0;1 ** Infinity→1;2 ** Infinity→Infinity
实际开发中的注意事项
Infinity 值常来自除零、溢出或显式赋值,在计算中需主动防御:
- 用
isFinite()快速判断是否为普通数字(排除Infinity、-Infinity和NaN) - 避免直接比较
val === Infinity,推荐用Number.isFinite(val)或!isFinite(val) && !isNaN(val)区分无穷与 NaN - 做归一化、比例计算前,先过滤或截断无穷值,例如:
Math.min(Math.max(val, -1e308), 1e308) - 后端传来的极大数(如时间戳溢出、计数器翻转)可能被 JS 解析为
Infinity,建议接口层做数值校验


















