切换案例通常就像
Monday:
Tuesday:
Wednesday:
etc.
我想使用范围。
from 1-12:
from 13-19:
from 20-21:
from 22-30:
有可能吗?顺便说一句,我正在使用javascript / jquery。
答案 0 :(得分:14)
你可以尝试滥用开关堕落行为
var x = 5;
switch (x) {
case 1: case 2: case 3: case 4: ...
break;
case 13: case 14: case 15: ...
break;
...
}
非常详细
或者你可以试试这个
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):
...
}
这可以帮助您获得所需的行为。我在checkRange的else中返回!x
的原因是为了防止将undefined
传递给switch语句时的问题。如果你的函数返回undefined
(如jdk的例子那样)并且你将undefined
传递给开关,那么第一个案例将被执行。在任何相等测试下,!x
保证不等于x
,这就是switch语句选择执行哪种情况的方式。
答案 1 :(得分: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;
}
我发现这比一堆IF语句更容易阅读。
答案 2 :(得分:1)
你可以制作有趣的克拉奇。例如,要使用JavaScript开关在范围内测试数字,可以编写自定义函数。基本上有函数测试给n值并且如果它在范围内则返回它。否则返回undefined或其他虚拟值。
<script>
// Custom Checking Function..
function inRangeInclusive(start, end, value) {
if (value <= end && value >= start)
return value; // return given value
return undefined;
}
// CODE TO TEST FUNCTION
var num = 3;
switch(num) {
case undefined:
//do something with this 'special' value returned by the inRangeInclusive(..) fn
break;
case inRangeInclusive(1, 10, num):
alert('in range');
break;
default:
alert('not in range');
break;
}
</script>
这适用于Google Chrome。我没有测试其他浏览器。
答案 3 :(得分:0)
不,您需要使用if / else if系列来执行此操作。 JavaScript不是这种幻想。 (语言不多。)