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

为什么这段实现分数评级的JavaScript switch语句无法正常运行?

故障原因
  • 核心逻辑错误:JS的switch采用**严格全等(===)**匹配规则,你当前switch后传入的是分数值,而每个case后的条件表达式返回的是布尔值true/false,二者类型不一致永远无法匹配,所有判断分支都会失效。
  • 数据类型错误:prompt的返回值是字符串类型,未做类型转换直接和数字做大小比较,存在隐式转换风险,若用户输入非数字内容会导致判断异常。
  • 区间边界错误:现有区间存在重叠,比如分数等于80时,同时满足>=80 && <=100和>=70 && <=80两个条件,边界值匹配逻辑混乱。
  • 拼写错误:代码中的gread应为grade,成绩不及格的提示Field应为Fail。
修正方案

如果要使用switch实现区间判断,可以将switch后的表达式设为true,这样只要case后的条件返回true就可以命中对应分支,同时做好类型校验和区间调整,修正后代码如下:

// 把prompt返回的字符串转成数字
const number = Number(prompt("Enter your number"));
const txt = "Your result is : ";

// switch传入true,匹配返回true的case条件
switch (true) {
  case isNaN(number):
    document.write(`Not input any valid number. Please input a number.`);
    break;
  case (number >= 80 && number <= 100):
    document.write(`${txt} A+`);
    break;
  case (number >= 70 && number < 80):
    document.write(`${txt} A grade`);
    break;
  case (number >= 60 && number < 70):
    document.write(`${txt} B grade`);
    break;
  case (number >= 50 && number < 60):
    document.write(`${txt} C grade`);
    break;
  case (number >= 33 && number < 50):
    document.write(`${txt} D grade`);
    break;
  case (number >= 0 && number < 33):
    document.write(`${txt} Fail !`);
    break;
  case (number > 100 || number < 0):
    document.write(`It's not a valid number. Please input a valid number between 0 and 100.`);
    break;
  default:
    document.write(`Please input a valid number.`);
    break;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:15:06