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
相关产品推荐
相关产品推荐

