Javascript switch case语句的fall-through中的分号

Javascript switch case语句的fall-through中的分号,javascript,java,c#,c++,c,Javascript,Java,C#,C++,C,在case语句中添加分号作为fall-through的一部分有什么意义吗?我看到fall-through按预期工作,并猜测分号被解释为空语句。但是有分号的优点/缺点吗?是否有推荐的最佳实践?在下面的javascript示例中,请参见第一个case语句中的分号 switch(a) { case 2:; case 3: alert('hello'); break; default: alert('default hello'); }

在case语句中添加分号作为fall-through的一部分有什么意义吗?我看到fall-through按预期工作,并猜测分号被解释为空语句。但是有分号的优点/缺点吗?是否有推荐的最佳实践?在下面的javascript示例中,请参见第一个case语句中的分号

    switch(a) {
        case 2:;
        case 3: alert('hello'); break;
        default: alert('default hello');
    }

我也对C、C++和java中的上述最佳实践有兴趣。我还看到了一些文档,其中指出如果fall-through中的case语句部分有一个语句,C#就会抛出编译错误。像上面这样的空语句是否会触发C#?

中的错误不,这没有任何区别

我建议您不要使用它,因为在我看来,它使代码不那么清晰

在C#中,这是一个错误。
D不允许
也是一个空语句,您必须使用
{}

不,这没有任何区别

我建议您不要使用它,因为在我看来,它使代码不那么清晰

在C#中,这是一个错误。
D不允许
作为一个空语句,你必须使用
{}

语法上是一样的


不过,它肯定会让人感到困惑,所以我建议不要使用它,因为它在语法上是一样的

但它肯定会让人困惑,所以我建议不要使用它

最佳做法

通常不使用空语句

    switch(a) {
        case 2:;
        case 3: alert('hello'); break;
        default: alert('default hello');
    }
像上面这样的空语句会在C#中触发错误吗

最佳做法

通常不使用空语句

    switch(a) {
        case 2:;
        case 3: alert('hello'); break;
        default: alert('default hello');
    }
像上面这样的空语句会在C#中触发错误吗


是的。

对C、C++和java没有任何帮助。如果你不需要它,就不要使用它。但是,如果你正在实现一个或一个变体,那么一定要给你的代码的未来读者一根骨头,并给他们留下“失败”或“不中断”的注释

在C中#

通过中断C#允许的一点点下降,防止案例2和案例3执行相同的代码

switch(a) {
    case 2:
    case 3: Console.WriteLine("hello"); break;
    default: Console.WriteLine("default hello"); break;
}

对于执行相同代码的情况2和3有效

对C、C++和java没有任何帮助。如果你不需要它,就不要使用它。但是,如果你正在实现一个或一个变体,那么一定要给你的代码的未来读者一根骨头,并给他们留下“失败”或“不中断”的注释

在C中#

通过中断C#允许的一点点下降,防止案例2和案例3执行相同的代码

switch(a) {
    case 2:
    case 3: Console.WriteLine("hello"); break;
    default: Console.WriteLine("default hello"); break;
}

对于执行相同代码的情况2和3有效

我以前从未见过它。看不出有什么意义。一个五种语言的问题!,除了奇怪的
C
C++
代码使用如此宽的字符常量。在Java中不需要分号,它只会在C中出现,分号标记代码块/语句的结尾,即使其中没有任何内容。遵循
if()<代码>案例2:;//跌破
。我以前从未见过它。看不出有什么意义。一个五种语言的问题!,除了奇怪的
C
C++
代码使用如此宽的字符常量。在Java中不需要分号,它只会在C中出现,分号标记代码块/语句的结尾,即使其中没有任何内容。遵循
if()<代码>案例2:;//失败