TypeScript中Switch语句处理整数输入不生效问题求助
Switch语句始终走default分支的原因与解决办法
核心问题在于switch使用严格相等(===)匹配,而你的if-else用的是松散相等(==),两者的匹配规则存在关键差异:
- 你的
value实际是字符串类型(比如"1"、"2"),虽然你认为值正确,但switch里的case 1、case 2是数字类型,严格相等要求值和类型完全一致,因此匹配失败,直接进入default分支。 - 而if-else中的
==会自动进行类型转换,字符串"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; } }
- 将
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
相关产品推荐
相关产品推荐

