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

为何switch(false)始终匹配第一个case?求解JavaScript switch逻辑

JavaScript中switch(false)的行为解析

先明确switch语句的核心逻辑:switch后面的表达式会先计算出一个值,然后依次和每个case后面的表达式计算结果做严格相等(===)比较,找到第一个匹配的case就执行对应的代码,直到遇到break或者switch语句结束。

回到你的代码:

let grade = 65;

switch(false){
  case grade >= 90: // 这里计算的结果是 65 >= 90 → false
    console.log(grade);
    console.log("You did great!");
    break;
  case grade >= 80: // 65 >=80 → false,但第一个case已经匹配并break了,所以不会走到这
    console.log("You did good!");
    break;
  default:
    console.log(grade, "is not a letter grade!");
}

你觉得不会命中任何case的误区在于,误以为switch(false)是要case的条件为true才会匹配,但实际上是要case表达式的结果和switch的表达式结果严格相等。这里第一个case的计算结果就是false,和switch(false)的false全等,所以直接命中第一个case,执行完代码后break跳出,自然不会走到后面的case或default。

如果把grade改成95,第一个case的结果是true,和switch(false)的false不全等;第二个case结果也是true,同样不等,最后才会走到default。

另外注意你的代码最后缺少一个闭合的},不过这不是导致当前问题的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:50:22