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

JS报Cannot read property 'toFixed' of undefined 披萨定价计算求助

报错直接原因

你遇到的Cannot read property 'toFixed' of undefined错误是因为代码里的topping变量只做了声明,没有任何赋值操作,默认值为undefined,对undefined调用Number类型的toFixed方法自然会抛出类型错误。

代码存在的其他核心问题
  • 变量覆盖:你连续两次给order变量赋值,第一次用户输入的披萨尺寸直接被第二次输入的配料数覆盖,后续无法获取披萨尺寸信息
  • 无效判断:small、medium、large三个变量仅声明未赋值,默认值为undefined,if (small==5.00)的判断条件永远不成立
  • 语法逻辑错误:else分支里的topping>=1==0.785+topping是无效代码,既没有赋值逻辑,也不符合题目给定的定价规则
  • 缺少核心规则实现:没有做配料数最多10份的截断处理,也没有统一叠加13%税费的逻辑
  • 输出逻辑错误:最终输出时把cost和topping两个变量直接拼接,而不是先求和再格式化
修复后完整代码
// 获取用户输入
const pizzaSize = prompt("What size pizza? (small/medium/large)").toLowerCase();
let toppingCount = parseInt(prompt("How many additional toppings?"));

// 配料数超过10默认按10计算
toppingCount = Math.min(toppingCount, 10);

let baseCost, toppingPerPrice;
// 按尺寸匹配定价
switch(pizzaSize) {
  case 'small':
    baseCost = 5;
    toppingPerPrice = 0.75;
    break;
  case 'medium':
    baseCost = 7;
    toppingPerPrice = 1;
    break;
  case 'large':
    baseCost = 10;
    toppingPerPrice = 1.25;
    break;
  default:
    document.write("输入的披萨尺寸无效");
    throw new Error("无效尺寸");
}

// 计算总价:(基底+配料总价)*1.13税费,保留2位小数
const totalCost = (baseCost + toppingCount * toppingPerPrice) * 1.13;
document.write(`Total $${totalCost.toFixed(2)}`);
修复说明
  • 拆分了披萨尺寸和配料数的存储变量,避免输入被覆盖
  • 新增配料数截断逻辑,调用Math.min确保配料数最高为10
  • 用switch判断披萨尺寸,匹配对应的基底价格和单份配料价格
  • 统一计算税费后再格式化输出,避免金额拼接错误

内容的提问来源于stack exchange,提问作者caitlinicecream

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:27:02