【发布时间】:2021-07-11 07:08:57
【问题描述】:
如果我理解正确,以下签名的 switch 语句执行:
switch (key) {
case value:
break;
default:
break;
}
如下:
- 如果大小写值匹配键
- 在里面执行代码
- 如果发现返回或中断
- 退出开关
- 否则评估下一个案例
- 否则评估下一个案例
因为当我省略 break 时 TypeScript 不会报错,所以我假设 switch 语句的工作方式类似于 if 语句;如果条件为真,就会执行 if 语句中的代码。
但如果我省略了中断,下面的示例代码将打印出所有 3 个案例,即使这些案例并不都是真的。
enum SomeEnum {
a = 'a',
b = 'b',
c = 'c',
}
doSomething(SomeEnum.a)
function doSomething(s: SomeEnum) {
switch (s) {
case SomeEnum.a:
console.log(1)
break
case SomeEnum.b:
console.log(2)
break
case SomeEnum.c:
console.log(3)
break
default:
break
}
}
所以,我想我在这里误解了一些东西,但是搜索这个问题并没有产生任何结果。如果有人能对此有所了解,我将不胜感激。
【问题讨论】:
-
如果你省略了 break 它会执行下面的所有语句。在您的情况下,它将为 SomeEnum.a 案例执行所有 3 个控制台日志,为 SomeEnum.b 执行 2 个控制台日志,为 SomeEnum.c 执行一个控制台日志
标签: typescript enums switch-statement