You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用parseFloat转换后求和仍返回NaN的技术问题求助

JavaScript数值求和NaN问题解决

问题根源

你的第四个属性freshsnow_single_resort.fs_ski_resort_aa_extreme_length是空白无值,parseFloat()处理空字符串/无值时会返回NaN。JavaScript中只要算术运算包含NaN,整个运算结果就会是NaN——这就是你最终得到NaN的原因。另外注意:typeof NaN返回的是Number,所以用typeof检测不出来变量实际是NaN。

修复方案

给每个parseFloat()的结果设置默认值0,避免出现NaN;同时求和时不需要再套parseFloat()(前面已经把变量转成数值类型了)。

修改后的代码:

console.log(freshsnow_single_resort.fs_ski_resort_aa_advanced_length);
console.log(freshsnow_single_resort.fs_ski_resort_aa_expert_length);
console.log(freshsnow_single_resort.fs_ski_resort_aa_freeride_length);
console.log(freshsnow_single_resort.fs_ski_resort_aa_extreme_length);

// 给每个parseFloat结果设置默认值0,避免NaN
let fs_ski_resort_aa_advanced_length = parseFloat(freshsnow_single_resort.fs_ski_resort_aa_advanced_length) || 0;
let fs_ski_resort_aa_expert_length = parseFloat(freshsnow_single_resort.fs_ski_resort_aa_expert_length) || 0;
let fs_ski_resort_aa_freeride_length = parseFloat(freshsnow_single_resort.fs_ski_resort_aa_freeride_length) || 0;
let fs_ski_resort_aa_extreme_length = parseFloat(freshsnow_single_resort.fs_ski_resort_aa_extreme_length) || 0;

// 直接求和,无需再用parseFloat
let expert_km = fs_ski_resort_aa_advanced_length + fs_ski_resort_aa_expert_length + fs_ski_resort_aa_freeride_length + fs_ski_resort_aa_extreme_length;

console.log(Number.isNaN(fs_ski_resort_aa_advanced_length));
console.log(Number.isNaN(fs_ski_resort_aa_expert_length));
console.log(Number.isNaN(fs_ski_resort_aa_freeride_length));
console.log(Number.isNaN(fs_ski_resort_aa_extreme_length));

console.log(expert_km);

补充说明

  • 如果担心0本身会被|| 0覆盖(比如属性值确实是0),可以用更严谨的判断:
    let val = parseFloat(xxx);
    let finalVal = Number.isNaN(val) ? 0 : val;
    
  • Number.isNaN()是检测是否为NaN的可靠方法,比全局isNaN()更准确,因为全局isNaN()会先把非数值类型转成数值再判断。

内容的提问来源于stack exchange,提问作者spreaderman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 10:40:08