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

如何实现商品数量×单价加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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:40:36