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

JS中Switch Case为何总是进入Default分支?

问题原因及解决方案

你的代码问题出在JavaScript switch语句的匹配逻辑上:

switch会将括号里的表达式(这里是num)和每个case后的表达式做全等(===)比较。你写的case (6 >= num >= 1)这类表达式,会先被求值为布尔值true或false,而传入的num是数字类型,数字和布尔值永远不可能全等,所以所有case都匹配失败,最终进入default分支。

另外要注意:JavaScript里6 >= num >= 1这种写法本身逻辑错误,它会先计算6 >= num得到布尔值,再用这个布尔值和1比较,结果永远不符合你预期的范围判断逻辑,必须拆成num >= 1 && num <= 6这种形式。

修正方案一:调整switch的匹配逻辑

把switch的表达式改为true,让case直接判断条件(此时case的布尔结果会和true做全等匹配):

getBoardLocation(num) {
    switch (true) {
        case (num >= 1 && num <= 6):
            return 'bl';          
        case (num >= 7 && num <= 12):
            return 'br';
        case (num >= 13 && num <= 18):
            return 'tl';
        case (num >= 19 && num <= 24):
            return 'tr';
        default:
            // 可返回默认值或抛出错误,根据需求调整
            return null;
    }
}

修正方案二:改用if-else语句

对于范围判断场景,if-else的写法更直观,可读性更强:

getBoardLocation(num) {
    if (num >= 1 && num <= 6) {
        return 'bl';
    } else if (num >= 7 && num <= 12) {
        return 'br';
    } else if (num >= 13 && num <= 18) {
        return 'tl';
    } else if (num >= 19 && num <= 24) {
        return 'tr';
    } else {
        return null;
    }
}

内容的提问来源于stack exchange,提问作者יוני ארליך

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:10:36