javascript中嵌套的switch语句

时间:2016-07-14 09:51:07

标签: javascript switch-statement

是否可以在javascript中使用嵌套的switch语句。

我的代码看起来像

switch(id1)
{
case 1:
     switch(id2){
     case 1:{
        switch(id3){
        case 1:{}
        case 2:{}
        }
    }
     case 2:{
        switch(id4){
        case 1:{}
        case 2:{}
        }
     }
}
case 2:
}

如果是,那么这是一个很好的做法,或者我们可以使用任何替代方法。

4 个答案:

答案 0 :(得分:25)

你的方法绝对没问题。

您可以使用switch

使switch (true)嵌套不那么复杂
switch (true) {
case ((id1 === 1) && (id2 === 1) && (id3 === 1)) :
case ((id1 === 1) && (id2 === 1) && (id3 === 2)) :
case ((id1 === 1) && (id2 === 2) && (id3 === 1)) :
case ((id1 === 1) && (id2 === 2) && (id3 === 2)) :
case ((id1 === 2) && (id2 === 1) && (id3 === 1)) :
case ((id1 === 2) && (id2 === 1) && (id3 === 2)) :
case ((id1 === 2) && (id2 === 2) && (id3 === 1)) :
case ((id1 === 2) && (id2 === 2) && (id3 === 2)) :
}

答案 1 :(得分:4)

是的,您可以像这样使用内部开关,

请查看此演示:https://jsfiddle.net/1qsfropn/3/

var text;
var date = new Date()
switch (date.getDay()) {
 case 1:
 case 2:
 case 3:
 default:
    text = "Looking forward to the Weekend";
    break;
 case 4:
 case 5:
    text = "Soon it is Weekend";
    break;
 case 0:
 case 6:
      switch(date.getFullYear()){
      case 2015:
        text = "It is Weekend of last Year.";
      break;
      case 2016:
        text = "It is Weekend of this Year.";
      break;
      case 2017:
        text = "It is Weekend of next Year.";
      break;
      default:
      text = date.getDay();
      break;
    }
break;
}
document.getElementById("demo").innerHTML = text;`

答案 2 :(得分:3)

您可以使用嵌套的switch语句,但这很快就会成为意大利面条代码,因此不建议这样做。我宁愿使用带有嵌套switch语句的函数来进行代码清除,也可以使用递归函数,具体取决于代码应该做什么。

这只是一个伪代码,但我希望它能让你对如何实现它有所了解。您必须小心,以便在ID的某个给定值上停止递归。 如果ID的值为1,则此伪代码将ID的值递增1,如果值为2,则递增2。如果值不是1或2,则递归结束。

function recursiveSwitch(var id) {
    switch(id) {
       case 1: 
           recursiveSwitch(id + 1);
           break;
       case 2
          recursiveSwitch(id + 2)
          break;
       default:
          return;
     }
}

答案 3 :(得分:0)

基本上,它是可能的,但我认为这取决于嵌套的复杂性,如果建议使用嵌套的switch语句或将函数与嵌套的switch语句一起使用ÓmarÓskarsson建议。