是否可以在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:
}
如果是,那么这是一个很好的做法,或者我们可以使用任何替代方法。
答案 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)
是的,您可以像这样使用内部开关,
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建议。