javascript - switch 语句中的常见情况

标签 javascript switch-statement

我需要先执行一般情况,然后再执行具体情况,所以这就是我正在做的:

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 语句转移到第一个匹配项,然后执行所有语句(包括来自其他 case 的语句)直到遇到 break 语句。这种行为称为 fallthrough。

所以,每当这个 case 被 switch 捕获时,

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

这种情况总是被称为:

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

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

关于javascript - switch 语句中的常见情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51184229/

相关文章:

javascript - 如何在 ember-cli 中使用 New Relic?

javascript - React Native 底部选项卡导航不起作用

django - 如何在 Django 模板中获得 'switch-case' 语句功能?

javascript - 在 switch 语句中使用复选框

exception-handling - 为什么在返回 default case 的 switch 语句后抛出异常?

python - 如何在 Python 中为查询集创建 switch 语句

javascript - 在 nvd3 多图表中显示日期

javascript - 如何向 JavaScript 数组中的所有对象添加一个函数?

php - Ckeditor 在 p 标签的开头和结尾显示额外的空间

c# - C# 中任意代码块(通过大括号)的实际用途是什么