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 标注数值类型,在编译期拦截非数字
在数据入口处统一做类型转换和校验