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

TypeScript中Switch语句处理整数输入不生效问题求助

Switch语句始终走default分支的原因与解决办法

核心问题在于switch使用严格相等(===)匹配,而你的if-else用的是松散相等(==),两者的匹配规则存在关键差异:

  • 你的value实际是字符串类型(比如"1"、"2"),虽然你认为值正确,但switch里的case 1、case 2是数字类型,严格相等要求值和类型完全一致,因此匹配失败,直接进入default分支。
  • 而if-else中的==会自动进行类型转换,字符串"1"和数字1会被判定为相等,因此能正常进入对应分支。

两种解决方式:

  1. 将case值改为字符串类型,和value类型保持一致:
switch (value){
      case "1" : {
        res = value+"Hirukami Murakmi"
        break;
      }
      case "2" : {
        res = value+"Josephine"
        break;
      }
      default: {
        res = value+"Mikey n Blaky"
        break;
      }
}
  1. 将value转换为数字类型后再进入switch判断:
switch (Number(value)){
      case 1 : {
        res = value+"Hirukami Murakmi"
        break;
      }
      case 2 : {
        res = value+"Josephine"
        break;
      }
      default: {
        res = value+"Mikey n Blaky"
        break;
      }
}

你可以先通过console.log(typeof value)确认value的实际类型,验证上述结论。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:06:10