Switch函数问题:为何无法正确处理数值70?
问题分析与解决
你的switch写法逻辑错误,switch是拿括号内的表达式与每个case的值做**全等(===)**匹配的。
你写的代码里,switch(age)传入70后,会把70依次和每个case的值对比:
- 第一个case是
(age > 65),这个表达式计算后结果为true,实际就是在判断70 === true,显然不成立,所以直接走到了default分支。
修正方案一:调整switch的匹配逻辑
把switch的表达式改成true,让case里的条件表达式结果与true匹配:
let test = (age) => { switch (true) { case (age > 65): console.log("High age") break default: console.log("Low age") break } } test(70) // 输出 "High age"
修正方案二:改用if-else(更适合范围判断)
对于这种数值范围类的判断,if-else写法更直观,不容易出错:
let test = (age) => { if (age > 65) { console.log("High age") } else { console.log("Low age") } } test(70) // 输出 "High age"
内容的提问来源于stack exchange,提问作者Sparzza
相关产品推荐
相关产品推荐

