为什么OR运算符在Switch语句中不起作用

问题描述 投票:1回答:2

Java Switch Statement - Is "or"/"and" possible?

上面有很多答案,为在我的示例中使用此错误语法提供了很好的选择,但我还没有阅读说明为什么它不起作用:

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'是真实的,那么第一种情况将评估为true并返回'前3个,但是情况并非如此。有人可以解释为什么吗?

javascript switch-statement
2个回答
0
投票

实际上-我认为答案可能是这样的:如果提供了'a',则switch语句从列出的案例定义中将其识别为有效案例。但是,如果提供了'b'或'c',则结果将为'true',这将返回默认值,因为switch语句不查找真实值以及您使用'||'的时间。它变成一个。是吗?


0
投票

它不起作用,因为第一个truthy值是通过使用logical OR ||进行严格比较而获得的。

或者,您可以使用直插法,将三个案例排成一行,例如

||

0
投票

这里

const
    switchExample = (val) => {
        switch(val) {
            case 'a':
            case 'b':
            case 'c':
                return 'first 3'; // no break required, because return ends the function
            case 'd':
                return 'fourth';
            default:
                return 'default';
        }
    }

首先计算表达式 switch(val) { case 'a' || 'b' || 'c': 的值(它是'a' || 'b' || 'c'),然后'a'将检查switch是否适合val

您需要以这种方式进行替代:

case
© www.soinside.com 2019 - 2024. All rights reserved.