switch语句中的常见情况

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了switch语句中的常见情况相关的知识,希望对你有一定的参考价值。

我需要执行常见案例然后执行具体案例,这就是我正在做的事情:

let array = ['foo', 'bar', 'baz'];

array.forEach(element => {
    switch (element) {
        case 'baz':
            console.log('its baz');
            break;
        case 'foo':
        case 'bar':
            console.log('its foo or bar');
        case 'foo':
            console.log('its foo');
            break;
        case 'bar':
            console.log('its bar');
            break;
        default:
            break;
    }
});

输出:

its foo or bar
its foo
its foo or bar
its foo // expected: 'its bar'
its baz

它适用于foo但不适用于bar。我错过了什么?

答案

Switch-case以这种方式工作:控制从switch语句转移到第一个匹配,然后执行所有语句(包括来自其他情况的语句),直到遇到break语句。此行为称为fallthrough。

所以,每当这个案例被切换到时,

case 'foo':
case 'bar':
    console.log('its foo or bar');

这种情况总是被称为:

 case 'foo':
    console.log('its foo');

原因是在第一个片段之后没有break语句。因此,控件继续执行语句,直到遇到break语句。

另一答案

您正面临的情况的原因已由@SHRAIYSH解释。以下是您可能正在寻找的另一种解决方案

let array = ['foo', 'bar', 'baz'];

array.forEach(element => {
    switch (element) {
        case 'baz':
            console.log('its baz');
            break;
        case 'foo':
        case 'bar':
            console.log('its foo or bar');
            if(element==='foo'){
            	console.log('its inner foo');
            }else{
              console.log('its inner bar')
            }
        break;
        case 'foo':
            console.log('its foo');
            break;
        case 'bar':
            console.log('its bar');
            break;
        default:
            break;
    }
});
另一答案

您必须使用2个嵌套的switch语句,如下所示:

let array = ['foo', 'bar', 'baz'];

array.forEach(element => {
    switch (element) {
        case 'baz':
            console.log('its baz');
            break;
        case 'foo':
        case 'bar':
             console.log('its foo or bar');
             switch (element) {
                 case 'foo':
                    console.log('its foo');
                    break;
                 case 'bar':
                    console.log('its bar');
                    break;
             }
        default:
            break;
    }
});
另一答案

试试这个 :)

let array = ['foo', 'bar', 'baz'];

array.forEach(element => {
    switch (element) {
        case 'baz':
            console.log('its baz');
            break;
        case 'foo':
        case 'bar':
            console.log('its foo or bar');
        case 'foo':
            if (element === 'foo')  {
                console.log('its foo');
                break;
            }
        case 'bar':
            console.log('its bar');
            break;
        default:
            break;
    }
});

以上是关于switch语句中的常见情况的主要内容,如果未能解决你的问题,请参考以下文章

golang中一种不常见的switch语句写法

switch语句 switch语句的相关知识

switch 语句中的多个情况

Matlab 中的类和 switch 语句

switch 语句中的奇怪行为

Go常见语句