是否可以在一个开关盒中安装多个开关盒?

时间:2016-07-24 11:19:22

标签: javascript

是否可以制作两层开关盒?假设我有两个表达式,在第一个案例中它会查找第二个表达式?我用Google搜索了,但我找不到任何我想要的东西。

bodyElements += "<td><img src='" + value.CategoryImage + "'></td>"; 

2 个答案:

答案 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',但Middletruefalse(如果它真的是一个布尔值,它必须是),那么就不会运行默认代码,因为下级交换机没有默认值。

或者,您可以合并MiddleDirection,这样可以更容易地使用默认值来处理不匹配的案例:

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