处理 switch 语句中的组合情况和重复情况

dav*_*rey 3 javascript optimization case-statement switch-statement

是否可以合并cases共享作业并重复case未共享的作业,还是最好将每个作业分开?


用一个简单的例子来说明..case 0并且180两者都包含w = 330,因此它们已合并;每个分配的值x都不同,因此它们会重复进行x分配。

switch(window.orientation) {
    case   0:
    case 180:
        w = 330;
        //break
    case   0:
        x = '-180px';
        //break
    case -90:
    case  90:
        w = 480;
        x = '0';
        break;
    case 180:
        x = '-80px';
        break;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*lli 6

当要在语句中对每个元素执行多个操作时switch,最好不要重复相同的操作case两次。您可以通过总结同一case.

例如,如果你想Acase 0andB执行操作case 0case 1那么你应该这样做:

switch(variable) {
    case 0:
        // operation A;
    case 1:
        // operation B;
        break;
}
Run Code Online (Sandbox Code Playgroud)

这将执行操作ABon case 0,因为没有breakon case 0

现在假设您写了这样的内容:

switch(variable) {
    case 1:
        x = 1;
        break;
    case 1:
        x = 2;
        break;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码最终会将值分配1给变量x。第二个case 1说法x = 2永远不会实现,因为break第一个说法case 1

因此,如果您必须对case 0和执行不同的操作case 1,但它们共享某些操作,那么最好将重复某些代码行的情况分开,而不是编写case 1两次,因为这使您的代码更易于阅读并且速度稍快。

因此,在您的代码中,实现您想要的效果的最佳方法是:

switch(window.orientation) {
    case   0:
        x = '-180px';
        w = 330;
        break;
    case 180:
        x = '-80px';
        w = 330;
        break;
    case -90:
    case  90:
        w = 480;
        x = '0';
        break;
}
Run Code Online (Sandbox Code Playgroud)