undefined转数字结果为nan,因tonumber抽象操作对undefined明确定义返回nan;常见转换如number(undefined)、+undefined均得nan;判断nan应使用number.isnan(),安全处理推荐??操作符。

在 JavaScript 中,把 undefined 转成数字的结果是 NaN(Not-a-Number)。
为什么是 NaN?
JavaScript 在执行数字转换(如 Number(undefined)、+undefined 或参与算术运算时)会按规范调用抽象操作 ToNumber。对 undefined,该操作明确定义返回 NaN。
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
常见转换方式及结果
-
Number(undefined)→ NaN -
+undefined→ NaN -
undefined * 1→ NaN -
parseInt(undefined)→ NaN(因为先转字符串是"undefined",解析失败) -
parseFloat(undefined)→ NaN
需要注意的坑
NaN 是唯一一个不等于自身的值:NaN === NaN 返回 false。判断是否为 NaN 应使用 isNaN() 或更可靠的 Number.isNaN()。
如何安全处理 undefined 转数字?
实际开发中,建议显式提供默认值,避免隐式转换:
-
Number(value) || 0(注意:0、NaN都是 falsy,慎用) -
Number(value) ?? 0(推荐,只在value为null或undefined时取默认值) -
typeof value === 'number' ? value : 0(更严格校验类型)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










