JavaScript箭头函数结合三元运算符返回NaN问题求助
问题原因与解决方案
核心问题
- 你将
nValue声明为了箭头函数类型,并未主动调用该函数传入参数,直接读取nValue拿到的是函数对象而非计算结果,用于数值场景时就会返回NaN - 箭头函数内部不需要对参数做重复赋值,三元运算符本身可直接返回结果,多余的赋值操作只会增加逻辑歧义
- 额外优化建议:可以给三元运算的判断条件包裹括号,提升代码可读性,避免运算符优先级导致的逻辑异常
修复后代码
如果你需要复用计算逻辑,可以单独定义函数后调用:
const nVal = 138 // 定义计算逻辑的箭头函数 const getNumValue = num => (num === 11 || num === 22 || num === 33) ? num : Math.floor(num/100) + Math.floor(num%100/10) + num%10 // 调用函数传入参数拿到最终结果 const nValue = getNumValue(nVal)
如果不需要复用逻辑,可以直接用立即执行函数一次性拿到结果:
const nVal = 138 const nValue = (num => (num === 11 || num === 22 || num === 33) ? num : Math.floor(num/100) + Math.floor(num%100/10) + num%10)(nVal)
内容的提问来源于stack exchange,提问作者Russ
相关产品推荐
相关产品推荐

