js中的switch语句 - switch javascript




switch语句中的独立中断 (2)

TL; DR那个break语句是无效的,是一个死码。 控制永远不会到达那里。

C11标准有一个相似案例的相当好的例子,让我直接引用。

从第6.8.4.2 / 7章( 重点介绍

示例在人造程序片段中

switch (expr)
{
    int i = 4;
    f(i);
case 0:
    i = 17;
    /* falls through into default code */
default:
    printf("%d\n", i);
}

标识符为i的对象存在自动存储持续时间(在块内),但是从不初始化,因此如果控制表达式具有非零值,则对printf函数的调用将访问不确定的值。 类似地, 无法达到函数f调用。

我偶然发现了这个代码,它按预期工作:

switch (ev->deviceType) {

    break;

    case DEVICE_TS1E0:
        //some code
        break;

    case DEVICE_TS1E3:
       //some code
       break;

    default:
        //some logging
        break;
}

现在,有一个寂寞的break; 在开关的开始,似乎没有效果。

有没有什么情况下, 会有影响吗?


这条语句和switch语句中不在case子句中的任何其他语句都是无法访问的代码,也就是死代码。 这意味着他们将不会被运行。 不建议使用它们。





break