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

使用JavaScript的switch case和函数创建简易计算器遇undefined错误求助

计算器代码问题分析与修复

问题1:switch语句用法错误

switch只能接收单个判断表达式,你写的switch(a,b)完全不符合语法逻辑——要判断的是用户选择的操作符(tell变量),而不是两个数字参数,这里应该把tell作为switch的判断对象。

问题2:函数没有返回值

你的calculate函数里只计算了answer但没通过return返回结果,调用函数时自然会得到undefined,这就是弹窗显示undefined的核心原因。

问题3:字符串未转数字

prompt获取的输入是字符串类型,直接用+运算会变成字符串拼接(比如输入1和2,结果是"12"而不是3),必须把输入转成数字类型才能正确计算。

问题4:缺少异常处理

如果用户输入了非指定的操作符,或者除数为0,代码没有任何提示,体验很差,建议补充这些场景的处理。


修正后的代码

let tell = prompt("What would you like to do (*,/,+,-)");
// 把输入转成数字,同时兼容用户取消输入的情况
let dig1 = Number(prompt("Enter first Number"));
let dig2 = Number(prompt("Enter second Number"));

function calculate(num1, num2, operator) {
    let answer;
    switch (operator) {
        case "*":
            answer = num1 * num2;
            break;
        case "/":
            // 处理除数为0的错误
            if (num2 === 0) {
                return "Error: 不能除以0";
            }
            answer = num1 / num2;
            break;
        case "+":
            answer = num1 + num2;
            break;
        case "-":
            answer = num1 - num2;
            break;
        default:
            answer = "Error: 无效的操作符";
    }
    return answer;
}

alert(calculate(dig1, dig2, tell));

额外优化说明

  • 把操作符tell作为参数传入函数,不再依赖全局变量,让函数逻辑更独立
  • 增加了除数为0和无效操作符的错误提示
  • 统一变量命名,让代码更易读

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:42:24