JavaScript计算代码运行后返回结果始终为0的问题求助
问题根源
代码返回固定0值和let声明的变量赋值逻辑无关,核心错误是错误使用parseInt()处理带小数的数值。parseInt()的作用是将入参解析为整数,解析时遇到第一个非数字字符(包括小数点)就会停止,直接返回之前截断得到的整数部分,你注释中标注的几个带小数的输入,实际解析结果和预期完全不符:
- 预期
value1为3.5,实际parseInt("3.5")返回整数3 - 预期
value3为0.3,实际parseInt("0.3")返回整数0 - 预期
valueExtra为10.5,实际parseInt("10.5")返回整数10
不管if判断走哪个分支,最终计算逻辑都是有效值 * value3,而value3被解析为固定值0,乘法结果自然永远是0。
修复方法
处理包含小数的数字转换时,不要使用仅能解析整数的parseInt(),替换为Number()做完整数值转换即可,修复后的代码如下:
const value0 = Number(this.value0); // 8500 const value1 = Number(this.value1); // 3.5 const value2 = Number(this.value2); // 5700 const value3 = Number(this.value3); // 0.3 const valueExtra = Number(this.valueExtra); // 10.5 let myResult = 0 if (value0 > (value1 * value2)) { myResult = (value1 * value2) * value3; } else { myResult = valueExtra * value3; } return myResult
如果需要兼容输入为空、输入非数字的异常场景,可以在转换后增加isNaN()校验,给异常值设置默认兜底值,避免计算返回NaN。
内容的提问来源于stack exchange,提问作者Rolanda
相关产品推荐
相关产品推荐

