[英]Why don't OR operators work in Switch statements
在我的示例中,有很多类似上面的答案可以很好地替代使用这种错误语法,但我还没有阅读到为什么它不起作用的解释:
const switchExample = (val) => {
switch(val) {
case 'a' || 'b' || 'c':
return 'first 3'
break;
case 'd':
return 'fourth'
break;
default:
return 'default'
}
}
使用 'b' 或 'c' 作为参数调用将返回默认值。 而“a”将返回(如预期的那样)“前 3”。 我期待如果“b”是真的,那么第一个案例将评估为真并返回“前 3”,但事实并非如此。 有人可以解释为什么吗?
这里
switch(val) {
case 'a' || 'b' || 'c':
表达式'a' || 'b' || 'c'
'a' || 'b' || 'c'
'a' || 'b' || 'c'
将首先被评估(它是'a'
),然后switch
将检查val
是否适合case
。
您需要以这种方式进行替代:
switch(val) {
case 'a':
case 'b':
case 'c':
return 'first 3';
case 'd':
// ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.