开关的情况下通常是像jquery在开关盒中使用范围?
Monday:
Tuesday:
Wednesday:
etc.
我想使用的范围。
from 1-12:
from 13-19:
from 20-21:
from 22-30:
这可能吗?顺便说一句,我正在使用JavaScript/jQuery。
开关的情况下通常是像jquery在开关盒中使用范围?
Monday:
Tuesday:
Wednesday:
etc.
我想使用的范围。
from 1-12:
from 13-19:
from 20-21:
from 22-30:
这可能吗?顺便说一句,我正在使用JavaScript/jQuery。
你可以尝试通过行为
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语句如何选择执行的情况。
不,你需要使用if/else if系列来做到这一点。 JavaScript不是这样的幻想。 (没有多少语言。)
您可以制作有趣的杂物。例如,要使用JavaScript开关针对范围测试数字,可以编写自定义函数。基本上有函数测试给定值,并返回它,如果它在范围内。否则返回未定义或其他虚拟值。
<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中使用。我没有测试其他浏览器。
如果num未定义,它会工作吗? – barkmadley 2009-10-26 08:15:23
如果num未定义,它不能正常工作。 – 2009-10-26 14:47:20
@barkmadley:我刚刚编辑了代码,并添加了一个未定义值的例子来显式处理它。在inRangeInclusive(..)函数中可能有更好的返回值。接受建议。谢谢。 – 2009-10-26 14:51:14
晚会到了,但是在搜索同一个问题的答案时,我遇到了这个线索。目前我实际上使用开关,但方式不同。例如:
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语句更容易阅读。
你不能在JavaScript中这样做,它不会评估表达式。 – zuallauz 2011-11-02 02:55:55
不确定你的意思 - 它在我投入它的每个测试案例中都能正常工作。 – stephennmcdonald 2012-06-11 14:56:26
[我如何在使用JavaScript的switch case语句中使用范围?](http://stackoverflow.com/questions/17145723/how-can-i-use-ranges-in-a-switch- case-statement-using-javascript) – Helen 2013-09-01 09:09:11