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

Can I somehow use if statement in switch to add more cases?

本文关键字:添加 语句 案例 if 方式 开关 我可以      更新时间:2023-09-26

我正在尝试编写一个"switch"语句,但我有严格定义的大小写,我想使用尽可能少的代码。因此,当我想知道如何做到这一点时,我想到了一个想法,是否可以在"开关"中添加"if"语句,因此如果这个"if"语句为真,则可以在我的"开关"中添加更多情况。例如:

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;
}

附言我使用的真实场景要复杂得多,代码真的很长,所以如果它们适合用例,欢迎任何建议。

你可以这样做

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));

也许你稍微移动一下你的逻辑。您可以省略 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;
}

将测试移到机箱内,如果失败,则失败:

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;
}

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;
}