Javascript 开关箱-其他条件 //您将收到不同的问候语 //今天是星期几。请注意,Sunday=0, //星期一=1,星期二=2等。 var d=新日期(); var theDay=d.getDay(); 开关(当日) { 案例5: 文件。填写(“最后一个星期五”); 打破 案例6: 文件。编写(“超级星期六”); 打破 案例0: 文件。写(“昏昏欲睡的星期天”); 打破 违约: 写下“我期待着这个周末!”; }
如果Javascript 开关箱-其他条件 //您将收到不同的问候语 //今天是星期几。请注意,Sunday=0, //星期一=1,星期二=2等。 var d=新日期(); var theDay=d.getDay(); 开关(当日) { 案例5: 文件。填写(“最后一个星期五”); 打破 案例6: 文件。编写(“超级星期六”); 打破 案例0: 文件。写(“昏昏欲睡的星期天”); 打破 违约: 写下“我期待着这个周末!”; },javascript,Javascript,如果theDay=5,则最后显示星期五。我想知道哪一天=5,然后显示“最终某物”。。其他人也是如此 在没有If/else条件的情况下是否可能如果案例5未执行,我可以在该位置执行其他操作吗?您可以执行以下操作: <script type="text/javascript"> //You will receive a different greeting based //on what day it is. Note that Sunday=0, //Monday=1, Tuesday=
theDay=5
,则最后显示星期五
。我想知道哪一天=5,然后显示“最终某物”。。其他人也是如此
在没有If/else条件的情况下是否可能如果案例5未执行,我可以在该位置执行其他操作吗?您可以执行以下操作:
<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>
标准的
if
/else
将是实现这一目标的最佳方式。我想知道你为什么不带我去做
也就是说,它不是很优雅,但您可以尝试在switch语句的顶部添加以下内容:
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;
}
给你:
case 0:
case 1:
case 2:
case 3:
case 4:
case 6:
document.write("Finally Something");
它就像开关跳转到匹配的案例,如果它不匹配,它将跳转到匹配的案例。对于您的问题“如果案例5不执行,我可以在该位置执行其他操作吗?”的答案是否定的,因为它根本不会到达该案例。它跳转到下一个匹配的大小写或默认值 在没有If/else条件的情况下是否可能。如果案例5未执行,我可以在该位置执行其他操作吗 没有 switch语句将执行第一个匹配的case,然后继续执行(忽略所有进一步的case标签),直到到达break语句或switch块的末尾-但是即使您可以通过省略break语句来“忽略”后续的case,switch也不提供任何机制来说明“当此案例不匹配/未执行时,请采取措施,但也要继续尝试寻找匹配的案例” 您所描述的内容通常是通过一系列if/else语句完成的:
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!");
}
请注意,我添加了一个matched
标志以允许默认值工作。请注意,没有else if
语句,因为您需要执行每个if/else对
如果你真的决定使用switch语句,你可以做一些愚蠢的事情,比如:
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!");
}
如果需要按特定顺序执行案例,请使用数组而不是对象。答案过于复杂 简化
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!");
}
}
这是唯一不需要比较就可以制定的解决方案。
使用“默认”模式
如果没有If/else条件,是否可能。如果案例5不执行,我可以在该位置执行其他操作吗
使用如下所示的默认代码块。任何不匹配的情况都将退回到默认代码块
var myValue = "Friday"
switch (CHECK_SOMETHING)
{
case "SOME_VALUE":
myValue = "Some Other Day";
default:
}
工作原理:
- 将表达式的值与每种情况的值进行比较
- 如果存在匹配项,则执行关联的代码块
- 如果不匹配,则执行默认代码块
默认情况下的文本中?@FelixKling:我想如果5不执行,那么会发生其他情况…6或0可能会执行…使用纯旧if…else有什么问题?这不起作用。如果值为6,则只会执行第一个匹配的情况以及所有错误。it永远不会做第二种情况6.沿着这些思路的一些东西可能会工作,但是请注意,如果Day===5,那么您的代码将编写“Finally Friday”,然后是“Not Friday”(其他日子也是如此)。与其他情况相比,它如何更简单?默认模式是什么?
var myValue = "Friday"
switch (CHECK_SOMETHING)
{
case "SOME_VALUE":
myValue = "Some Other Day";
default:
}
switch(expression) {
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
}