Skip to content

NaN 结果

快速摘要

你的数学运算产生了 `NaN`——通常是因为把非数字的值当数字参与运算,且 `NaN` 会污染后续所有计算。

为什么发生

  • 把字符串或 undefined 当数字做算术,如 "abc" - 1

  • undefined 或非数字调用 Number.parseInt 后又参与运算

  • 0 除以 0 或对负数开平方等数学上未定义的运算

最小示例

✗ 错误代码
const price = "abc";
const total = price * 2;
console.log(total);
✓ 修复代码
const price = Number("abc");
const total = Number.isNaN(price) ? 0 : price * 2;
console.log(total);

"abc" 不是数字,price * 2 结果是 NaN。先转成数字,再用 Number.isNaN 判断并兜底为 0。

如何诊断

  • 在结果出现 NaN 的位置前,打印每个操作数的值和类型

  • Number.isNaN(x) 精确判断哪个中间结果是 NaN

  • 检查数据来源,确认是否混入了非数字字符串

如何修复

  • 运算前用 Number(x) 显式转换,并检查转换结果

  • Number.isNaN 过滤掉无效值,或用默认值兜底

  • 对用户输入做校验,拒绝非数字进入运算流程

如何预防

  • 使用 TypeScript 标注数值类型,在编译期拦截非数字

  • 在数据入口处统一做类型转换和校验

相关资源

相关术语

相关课程

相关练习

← 返回语言