javascript number 类型的三个特殊值是 nan、infinity 和 -infinity,均属 number 类型但需专用方法识别:nan 不等于自身,须用 number.isnan() 检测;infinity/-infinity 由溢出或除零产生,isfinite() 是判断有限数最可靠方式。

JavaScript 的 Number 类型有三个明确的特殊值:NaN、Infinity 和 -Infinity。它们属于 number 类型(typeof NaN === 'number'),但行为不符合常规数字直觉,必须用专门方式识别和处理。
NaN:非法数值的占位符
表示“不是一个数”,通常由无效数学运算(如 0/0)或类型转换失败(如 Number('abc'))产生。它唯一的特点是不等于自身:NaN !== NaN 恒为 true。
- 检测必须用
Number.isNaN(x)—— 它不强制转换类型,安全可靠 - 避免用全局
isNaN(x),它会先调Number(x),导致isNaN(' ')返回false,isNaN({})返回true -
typeof NaN === 'number'为真,但它是一个假值(!NaN === true)
Infinity 与 -Infinity:无穷大边界值
当数值超出 JavaScript 可表示范围时自动产生,比如 Number.MAX_VALUE * 2 或 1 / 0 得到 Infinity;-1 / 0 得到 -Infinity。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
typeof Infinity和typeof -Infinity都返回'number' - 它们参与运算有明确定义:同号相加仍为对应无穷,异号相减或相除常得
NaN - 判断可用
x === Infinity或x === -Infinity,但更推荐统一用isFinite(x)反向识别
区分有效数字的关键:isFinite()
真正“可用”的数字需同时满足:是 number 类型、非 NaN、非无穷。仅靠 typeof x === 'number' 不够。
-
isFinite(x)是最简洁可靠的判断方式,返回true当且仅当x是有限数 - 注意:
isFinite('123')会先隐式转换再判断,结果为true;若需严格类型检查,应先typeof x === 'number'再isFinite(x) - 不要手写
x !== NaN && x !== Infinity && x !== -Infinity—— 因为NaN !== NaN永远不成立
其他相关常量与边界值
虽然不是“特殊值”,但 Number 对象提供几个重要静态属性,用于描述数值能力边界:
-
Number.MAX_VALUE:约1.7977e+308,最大可表示正数 -
Number.MIN_VALUE:约5e-324,最小可表示正数(非最小负数) -
Number.MAX_SAFE_INTEGER:2^53 - 1,在此范围内整数可精确表示 -
Number.EPSILON:表示 1 与大于 1 的最小浮点数之间的差,用于浮点比较容错
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










