如何实现商品数量×单价加18%税费的函数?代码报错求助
问题排查与代码修正
报错原因
你的multyAll函数最终返回的是数值mul,但你调用后执行result(),把普通数值当成函数来调用,这就触发了“result不是函数”的错误。除此之外,代码还有几个不符合需求的问题:
prompt返回的是字符串,直接相乘会变成字符串拼接,不是数值计算- 函数没有按照需求计算原价加18%金额的最终总价,只返回了原价
- 传入的函数参数被
prompt输入覆盖,等于白传了
修正后的代码(支持用户输入版本)
function calculateTotal() { // 将prompt的字符串输入转为数值,避免计算错误 const quantity = Number(prompt('Insert quantity')); const oneCost = Number(prompt('Insert the cost')); const originalPrice = quantity * oneCost; // 计算18%的额外金额并加到原价上,用*1.18更简洁 const totalPrice = originalPrice * 1.18; return totalPrice; } // 函数返回的是数值,直接输出即可,不用加() const result = calculateTotal(); console.log(result);
固定测试值版本(对应需求里的10瓶0.8美元)
如果不需要用户输入,直接用需求里的参数计算,代码可以更简洁:
function calculateTotal(quantity, oneCost) { const originalPrice = quantity * oneCost; // 原价基础上加18%,等价于乘以1.18 return originalPrice * 1.18; } // 传入需求里的10和0.8,得到最终总价9.44 const result = calculateTotal(10, 0.8); console.log(result);
关键修正说明
- 去掉了参数覆盖:原函数里的
quantity = prompt(...)直接覆盖了传入的参数,现在要么用用户输入要么用固定参数,逻辑更清晰 - 修复了类型问题:用
Number()转换prompt的输出,确保乘法是数值运算而非字符串拼接 - 正确计算总价:按照需求把原价加上18%的金额,实现了最终总价的计算
- 修正调用方式:函数返回的是普通数值,直接
console.log(result)就行,不能加()当成函数调用
内容的提问来源于stack exchange,提问作者Rustin Wilde
相关产品推荐
相关产品推荐

