jquery在交换机案例中使用范围?

dru*_*mer 6 javascript switch-statement

开关箱通常都是这样的

Monday: 
Tuesday: 
Wednesday: 
etc. 
Run Code Online (Sandbox Code Playgroud)

我想使用范围.

from 1-12: 
from 13-19:
from 20-21:
from 22-30:
Run Code Online (Sandbox Code Playgroud)

可能吗?顺便说一句,我正在使用javascript/jquery.

bar*_*ley 14

你可以尝试滥用开关掉落的行为

var x = 5;
switch (x) {
    case  1: case 2: case 3: case 4: ...
        break;
    case 13: case 14: case 15: ...
        break;
    ...
}
Run Code Online (Sandbox Code Playgroud)

这是非常冗长的

或者你可以试试这个

function checkRange(x, n, m) {
    if (x >= n && x <= m) { return x; }
    else { return !x; }
}

var x = 5;
switch (x) {
    case checkRange(x, 1, 12):
        //do something
        break;
    case checkRange(x, 13, 19):
    ...
}
Run Code Online (Sandbox Code Playgroud)

这可以让你获得你想要的行为.我!x在checkRange的else中返回的原因是为了防止在传入undefinedswitch语句时出现问题.如果您的函数返回undefined(如jdk的示例所示)并且您传入undefined交换机,则将执行第一个案例. 在任何!x相等x测试下都保证不相等,这就是switch语句选择执行哪种情况的方式.


小智 7

迟到了,但在搜索同一个问题的答案时,我遇到了这个帖子.目前我实际上使用的是开关,但方式不同.例如:

switch(true) {
    case (x >= 1 && x <= 12):
        //do some stuff
        break;
    case (x >= 13 && x <= 19):
        //do some other stuff                
        break;
    default:
        //do default stuff
        break;
}
Run Code Online (Sandbox Code Playgroud)

我发现这比一堆IF语句更容易阅读.