javascript开关语句的最佳实践

javascript开关语句的最佳实践,javascript,switch-statement,Javascript,Switch Statement,我目前正在使用switch语句编写jquery脚本,我想知道当几个“案例”共享一些属性时,最好的解决方案是什么,假设我有以下模式: switch (settings.xxx) { case 'case1': Execute some code break; case 'case2': Execute some code break; case 'case3': Execute some code break; } 对于每种情况,我都有相当多的部分

我目前正在使用switch语句编写jquery脚本,我想知道当几个“案例”共享一些属性时,最好的解决方案是什么,假设我有以下模式:

switch (settings.xxx) {
case 'case1':
    Execute some code
    break;
case 'case2':
    Execute some code
    break;
case 'case3':
    Execute some code
    break;
}
对于每种情况,我都有相当多的部分重复的代码,因为这3种情况都有一些共同的属性。因此,我的问题是,我可以用以下方法做同样的事情:

switch (settings.xxx) {

case 'case1':
case 'case2':
case 'case3':
    Execute some code
    break;

}

switch (settings.xxx) {

case 'case1':
case 'case2':
    Execute some code
    break;
case 'case2':
case 'case3':
    Execute some code
    break;

}

或者这是一种不好的做法?

不,这不是一种不好的做法。实际上,这是一种很好的做法。这样,你会的


另外,请查看文档:

最佳做法是避免重复代码。这样,如果以后需要修改代码,就不需要记住在多个地方进行修改

在某些代码只适用于某些情况的情况下,您可以省去一个中断,执行第一节之后,执行将进入下一节。这仅适用于特殊情况代码可以在一般情况代码之前执行的情况。当你这样做的时候要小心,并添加清晰的评论,说明你是有意这样做的。否则,如果以后编辑代码,其他人可能不会意识到这是故意的,并在缺少代码的地方添加中断。见下文:

switch (settings.xxx) {
case 'case1':
case 'case2':
    Execute some code that applies to cases 1 & 2
    // break left out to allow execution to fall through
case 'case3':
    Execute some code that applies to cases 1 - 3
    break;
case 'case4':
    Execute different code
    break;
}

这三种情况下的“某些代码”都是一样的吗?第二种代码并不像您预期的那样工作。在
情况2中
,只执行第一个代码,然后将
从switch语句中断开。故障诊断仅适用于
案例1
。如果您被迫这样编写,可能
switch
语句不是解决方法。只是为了澄清,“一些代码”意味着这些部分共享几行。假设案例1和案例2共享一部分2-3行,案例2和案例3共享另一部分2-3行。这有点理论性,但我希望避免发布可能不必要的完整代码块。。。