我可以以某种方式在switch中使用if语句添加更多案例吗?

时间:2016-01-20 11:19:53

标签: javascript variables if-statement switch-statement

我正在尝试编写一个&#34; switch&#34; 语句,但我已经严格定义了案例,我希望尽可能少地使用代码。因此,当我想知道怎么做时,我想到了一个想法,是否可以在&#34;&#34; <&#34; <中添加&#34; if&#34; 语句/ em>所以,如果&#34;如果&#34; 语句为真,则将更多案例添加到我的&#34;切换&#34; 。例如:

switch(myVar) {
    case 1: 
        return 'Your variable is 1';
    case 2: 
        return 'Your variable is 2';
    if(yourVar && yourVar === true) {
        case 3: return 'Your variable is 3';
    }
    default: return 0;
}

P.S。我使用的真实场景更复杂,而且代码非常长,所以如果它们符合用例,那么欢迎使用任何sugestions。

4 个答案:

答案 0 :(得分:2)

也许你会稍微改变你的逻辑。您可以省略break语句,因为您使用return结束了该功能。

switch(true) {
    case myVar === 1:
        return 'Your variable is 1';
    case myVar === 2:
        return 'Your variable is 2';
    case yourVar:
        return 'Your variable is 3';
    default:
        return 0;
}

答案 1 :(得分:2)

将测试移到案例中,如果失败则通过:

switch(myVar) {
  case 1: 
    return 'Your variable is 1';
  case 2: 
    return 'Your variable is 2';
  case 3:
    if (yourVar) return 'Your variable is 3';
    /* fall through */
  default: 
    return 0;
}

答案 2 :(得分:1)

你可以这样做

function test(myVar, yourVar) {

  switch(myVar) {
    case 1: return '1';
    case 2: return '2';

    default:
      // as requested in a comment, add yourVar to myVar
      if(myVar != undefined && yourVar != undefined) return myVar + yourVar;

      return '0';
  }
}

alert(test(2));
alert(test(3));
alert(test(3,5));
alert(test(3,0));

答案 3 :(得分:0)

switch(myVar) {
    case 1: 
        return 'Your variable is 1';
    case 2: 
        return 'Your variable is 2';
    case 3: 
      if(yourVar && yourVar === true) {
        return 'Your variable is 3';
      }else{
        return 0:
        }
    default: return 0;
}