使用javascript switch语句的最佳实践

use*_*123 12 javascript switch-statement

我正在使用switch语句处理一个jquery脚本,我想知道当几个'case'共享一些属性时最好的解决方案是什么,让我说我有这样的模式:

switch (settings.xxx) {
case 'case1':
    Execute some code
    break;
case 'case2':
    Execute some code
    break;
case 'case3':
    Execute some code
    break;
}
Run Code Online (Sandbox Code Playgroud)

对于每种情况,我都有很多部分重复的代码,因为有些属性在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;

}
Run Code Online (Sandbox Code Playgroud)

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

Adr*_*iro 13

不,这不是不好的做法.实际上,这是一个很好的做法.这样,你就不会重复自己了.

另外,请查看文档:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/switch


小智 5

最佳做法是避免重复代码。这样,如果以后需要修改代码,则无需记住在多个位置进行修改。

在某些代码仅适用于某些情况的情况下,您可以省去一个中断,并且执行将在执行第一部分之后进入下一部分。仅当可以在一般案例代码之前执行特殊案例代码时才适用。执行此操作时请务必小心,并添加明确说明您有意这样做的注释。否则,如果以后对代码进行编辑,则其他人可能不会意识到它是有意的,并在缺少的地方添加断点。见下文:

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;
}
Run Code Online (Sandbox Code Playgroud)