infinity 和 -infinity 是 javascript 中表示正负无穷大的 number 类型值,适用于极值比较、边界判断等场景,能安全初始化最大/最小值比较器,参与比较运算但需注意其特殊算术行为和 json 序列化限制。

JavaScript 中的 Infinity 和 -Infinity 是两个特殊的数值,代表正无穷大和负无穷大,它们不是字符串也不是 undefined,而是真正的 number 类型值。它们天然适合处理极值比较、初始化最大/最小值、边界判断等场景,用法简洁且语义清晰。
用 Infinity 初始化最小值比较器
找数组中最小值时,常需要一个“足够大”的初始值。用 Infinity 作为起点最稳妥,因为它比任何数字都大,不会干扰比较逻辑:
-
let min = Infinity;—— 安全初始化,后续每个数字都能更新它 -
arr.forEach(n => min = Math.min(min, n));或直接Math.min(...arr)(但空数组会返回Infinity,需注意) - 若手动遍历,
min初始为Infinity能避免设成0或Number.MAX_VALUE带来的错误(比如数组含负数或超大数)
用 -Infinity 初始化最大值比较器
同理,找最大值时用 -Infinity 作初始值,它比所有数字都小:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
let max = -Infinity;—— 确保第一个有效数字一定能覆盖它 - 例如:
[10, -5, 100].reduce((a, b) => a > b ? a : b, -Infinity)返回100 - 相比
arr[0]初始化,它能安全处理空数组(当然仍需校验),也避免了对undefined的误判
在条件判断中表示数值边界
Infinity 和 -Infinity 可直接参与比较运算,常用于范围检查或默认兜底:
-
if (score > Infinity) { /* 永不执行 */ }—— 可作为“不可能条件”占位 - 函数参数默认值:
function clamp(value, min = -Infinity, max = Infinity) { return Math.max(min, Math.min(max, value)); } - 与
isFinite()配合过滤异常值:numbers.filter(n => isFinite(n))能剔除Infinity、-Infinity和NaN
注意类型与运算特性
它们是 number,但行为有特殊性,使用时需留意:
-
typeof Infinity === 'number',但Infinity === Number.POSITIVE_INFINITY为true - 算术运算:
Infinity + 1 === Infinity,Infinity * -1 === -Infinity,Infinity / Infinity得NaN - 不能 JSON 序列化:
JSON.stringify({x: Infinity})返回"{"x":null}"—— 需提前转换或过滤 - 与
null、undefined比较时会隐式转换,建议显式用isFinite()或Number.isFinite()判断有效性
不复杂但容易忽略:Infinity 和 -Infinity 是 JavaScript 数值系统的一部分,合理利用它们能让极值处理更健壮、代码更自解释。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










