<script type="text/javascript">
//You will receive a different greeting based
//on what day it is. Note that Sunday=0,
//Monday=1, Tuesday=2, etc.
var d = new Date();
var theDay = d.getDay();
switch (theDay)
{
case 5:
document.write("Finally Friday");
break;
case 6:
document.write("Super Saturday");
break;
case 0:
document.write("Sleepy Sunday");
break;
default:
document.write("I'm looking forward to this weekend!");
}
</script>
如果是theDay = 5
,那么我们会显示Finally Friday
。我希望如果theDay!= 5,然后显示'Finally Something'..同样适用于其他人......
没有If / else条件是否可行。 如果案例5没有执行,我可以在那个地方做其他事吗?
答案 0 :(得分:4)
没有If / else条件是否可行。如果案例5没有执行,我可以在那个地方做其他事吗?
没有
switch语句将执行第一个匹配的情况,然后继续(忽略所有进一步的case标签),直到它到达break语句或switch块的结尾 - 但即使你可以“掉头”到通过省略break语句后续的情况,switch没有提供任何机制来说“当这种情况不匹配/执行时做某事,但也继续试图寻找匹配的情况”。
您所描述的内容通常是通过一系列if / else语句完成的:
var d = new Date(),
theDay=d.getDay(),
matched = false;
if (theDay === 5) {
matched = true;
document.write("Finally Friday");
} else {
// your != 5 case here
}
if (theDay === 6) {
matched = true;
document.write("Super Saturday");
} else {
// your != 6 case here
}
if (theDay === 0) {
matched = true;
document.write("Sleepy Sunday");
} else {
// your != 0 case here
}
// default when none matched:
if (!matched) {
document.write("I'm looking forward to this weekend!");
}
请注意,我添加了matched
标记以允许默认设置工作。请注意,没有else if
语句,因为您需要执行每个if / else对。
如果确实决定使用switch语句,您可以执行以下操作愚蠢:
var d = new Date(),
theDay = d.getDay(),
c,
cases = { // pre-list all the "not" cases
"!5" : true,
"!6" : true,
"!0" : true
};
// add case for theDay and remove the "not" case for theDay (if there is one)
cases[theDay] = true;
if (cases["!" + theDay])
delete cases["!" + theDay];
for (c in cases) {
switch(c) {
case "5":
document.write("Finally Friday");
break;
case "!5":
document.write("Finally Something");
break;
case "6":
document.write("Super Saturday");
break;
case "!6":
document.write("Finally Something - but not 6");
break;
case "0":
document.write("Sleepy Sunday");
break;
case "!0":
document.write("Finally Something - but not 0");
break;
default:
document.write("I'm looking forward to this weekend!");
}
}
如果您需要以特定顺序执行个案,请使用数组而不是对象。
答案 1 :(得分:0)
您可以执行以下操作:
var something = 0;
switch (theDay) {
case 5:
document.write("Finally Friday");
something = 15;
break;
case 6:
document.write("Super Saturday");
something = 16;
break;
case 0:
document.write("Sleepy Sunday");
something = 20;
break;
default:
document.write("I'm looking forward to this weekend!");
}
switch (something) {
case 15: document.write("Not Friday"); break;
case 16: document.write("Not Saturday"); break;
case 20: document.write("Not Sunday"); break;
default: document.write("Nothing"); break;
}
答案 2 :(得分:0)
标准if
/ else
是实现这一目标的最佳方式。我想知道你为什么要这样做。
那说,它不是很优雅,但您可以尝试在switch语句的顶部添加以下内容:
case 0:
case 1:
case 2:
case 3:
case 4:
case 6:
document.write("Finally Something");
给你:
switch (theDay)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 6:
document.write("Finally Something");
case 5:
document.write("Finally Friday");
break;
case 6:
document.write("Super Saturday");
break;
case 0:
document.write("Sleepy Sunday");
break;
default:
document.write("I'm looking forward to this weekend!");
}
答案 3 :(得分:0)
它的类似开关跳转到匹配的情况,如果它不匹配,它将跳转到匹配的情况。问题的答案&#34;如果案例5没有执行,我可以在那个地方做点其他事吗?&#34;是不,因为它根本不会达到这种情况。它跳转到下一个匹配的情况或默认情况。
答案 4 :(得分:0)
是否可能没有If / else条件。如果案例5没有执行,我可以在那个地方做其他事情吗?
使用默认代码块,如下所示。与案例不符的任何内容都将退回到默认案例。
switch(expression) {
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
}
这是如何工作的:
答案 5 :(得分:-1)
过于复杂的答案。
简化。
var switchElse = true;
switch (CHECK_SOMETHING)
{
case "SOME_VALUE":
...DO SOMETHING...
switchElse = false;
break;
default:
}
if (switchElse)
{
...DO ELSE...
}
唯一可以在不进行比较的情况下制定的解决方案。 USE&#34; DEFAULT&#34; PATTERN 强>
var myValue = "Friday"
switch (CHECK_SOMETHING)
{
case "SOME_VALUE":
myValue = "Some Other Day";
default:
}