是否可以制作两层开关盒?假设我有两个表达式,在第一个案例中它会查找第二个表达式?我用Google搜索了,但我找不到任何我想要的东西。
bodyElements += "<td><img src='" + value.CategoryImage + "'></td>";
答案 0 :(得分:1)
是的,你必须使用个人的,完整的switch
es:
switch (Middle) {
case true:
switch (Direction) {
case 'left':
//code block
break;
case 'right':
//code block
break;
}
break;
case false:
switch (Direction) {
case 'left':
//code block
break;
case 'right':
//code block
break;
}
break;
default:
//code block
}
请注意,在上文中,如果Direction
不是'left'
或'right'
,但Middle
是true
或false
(如果它真的是一个布尔值,它必须是),那么就不会运行默认代码,因为下级交换机没有默认值。
或者,您可以合并Middle
和Direction
,这样可以更容易地使用默认值来处理不匹配的案例:
switch (Middle+'|'+Direction) {
case 'true|left':
//code block
break;
case 'true|right':
//code block
break;
case 'false|left':
//code block
break;
case 'false|right':
//code block
break;
default:
//code block
}
或者查看调度对象:
var actions = {
"true|left": function() {
// code for Middle = true, Direction = left
},
"true|right": function() {
// code for Middle = true, Direction = right
},
"false|left": function() {
// code for Middle = false, Direction = left
},
"false|right": function() {
// code for Middle = false, Direction = right
},
"default": function() {
// code for the default
}
};
(actions[Middle+"|"+Direction] || actions.default)();
...虽然在这个特定的情况下,它并没有在switch
上为你买多少东西。
答案 1 :(得分:0)
只需在switch
中使用其他case
。