Node.js中带三元运算的求和函数输入null时返回NaN问题求助
问题原因
你当前的代码只对参数严格等于null的场景做了默认值处理,没有覆盖其他会导致加法运算返回NaN的场景:
- 调用函数时少传参数,对应参数值为
undefined,undefined参与加法运算直接返回NaN - 传入字符串、对象等非数值类型的参数时,也会出现非预期结果或者NaN
修复方案
方案1:仅兼容null/undefined场景
如果你的参数只会出现null、undefined和合法数值三种情况,可以直接用空值合并运算符??简化代码,逻辑和你原本的判断逻辑一致,同时覆盖undefined的场景:
function sumfunct(x,y) { return (x ?? 0) + (y ?? 0); }
方案2:全场景兼容非数值输入
如果不能保证传入的参数都是合法数值,建议先做类型转换,非法数值统一替换为0:
function sumfunct(x,y) { const parseNum = (val) => isNaN(Number(val)) ? 0 : Number(val); return parseNum(x) + parseNum(y); }
以上代码不管传入的是null、undefined、非法字符串还是其他类型,都能保证返回合法的数值求和结果。
内容的提问来源于stack exchange,提问作者DRV
相关产品推荐
相关产品推荐

