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

JavaScript中使用switch处理数值范围时的问题排查

问题分析与解决

你的switch语句逻辑错误,核心原因是JavaScript的switch采用**严格相等(===)**进行匹配:

  • 你写的switch(salary)是拿工资的数值(比如示例里的2000)去和每个case后的表达式结果对比
  • 但case里的条件(比如salary < 1904)返回的是布尔值true或false,数字和布尔值不可能满足严格相等,所以所有case都匹配失败,只能进入default分支执行。

修正后的代码

把switch的判断条件改为true,这样每个case的布尔表达式结果会和true做严格相等匹配,和你原本if-else的逻辑完全一致:

console.log(`INCOME TAX TABLE 2023 - BRAZIL`);
const salary = 2000;

switch (true) {
    case (salary < 1904):
        console.log(`你今年无需缴纳所得税`);
        break;
    case (salary >= 1904 && salary < 2827):
        console.log(`你属于7.5%税率档,需缴纳的所得税金额为 ${salary * 0.075}`);
        break;
    case (salary >= 2827 && salary < 3751):
        console.log(`你属于15%税率档,需缴纳的所得税金额为 ${salary * 0.15}`);
        break;
    case (salary >= 3751 && salary < 4665):
        console.log(`你属于22.5%税率档,需缴纳的所得税金额为 ${salary * 0.225}`);
        break;
    default:
        console.log(`你属于27.5%税率档,需缴纳的所得税金额为 ${salary * 0.275}`);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:17:16