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
    }