【问题标题】:Is there a way to change cases within the switch statement?有没有办法在 switch 语句中更改大小写?
【发布时间】:2019-01-31 01:11:55
【问题描述】:

所以,我正在处理一个 switch 语句,我想知道是否可以更改特定操作的大小写。

假设我有这个:

var check0 = false;
var check1 = false;

switch(stage){

    case "0":
        rect(10,10,10,10);
        check0 = true;
        break;
    case "1":
        if(check0 === true){
            rect(20,20,20,20);
            check1 = true;
            break;
        }else{
            /* How to set case 0 ? */
            //stage = 0; //Doesnt work
            //stage = "0"; //Doesn't work
        }
        break;
}

【问题讨论】:

    标签: javascript switch-statement case onchange stage


    【解决方案1】:

    var check0 = false;
    var check1 = false;
    
    function xyz(stage){
        switch(stage){
    
            case "0":
               rect(10,10,10,10);
               check0 = true;
               break;
            case "1":
               if(check0 === true){
                   rect(20,20,20,20);
                   check1 = true;
                    break;
                }else{
                xyz(0)
                }
              break;
        }
    }

    【讨论】:

    • 您需要执行具有某些值的 xyz 函数。 xyz(valueYouWantToSend)
    【解决方案2】:

    封装函数:

    var check0 = false;
    var check1 = false;
    function checkFunc(stage) {
      switch(stage){
        case "0":
          rect(10,10,10,10);
          check0 = true;
          break;
        case "1":
          if(check0 === true){
            rect(20,20,20,20);
            check1 = true;
            break;
          }else{
            checkFunc("0")
          }
          break;
      }
    }
    checkFunc("1");

    【讨论】:

      【解决方案3】:

      您的选择是使用@Tarun Khurana 和@Artee 建议或重新组织案例的方法,使case "1"case "0" 之上,但仅在满足条件时才中断:

      switch(stage){
          case "1":
              if(check0 === true){
                  rect(20,20,20,20);
                  check1 = true;
                  break;
              } 
          // case "0" is executed since there is no break statement
          case "0":
              rect(10,10,10,10);
              check0 = true;
              break;
      }
      

      【讨论】:

        【解决方案4】:

        试试这个:

        var check0 = false, check1 = false;
        
        function checkSet(stage){
          switch(stage){
            case 0:
              //rect(10,10,10,10);
              check0 = true;
              return;
            case 1:
              if(check0 === true){
                //rect(20,20,20,20);
                check1 = true;
                return;
              }
              else{
                checkSet(0);   
              }
              return;
          }
        }
        
        console.log(check0); checkSet(1); console.log(check0);

        【讨论】:

          猜你喜欢
          • 2021-03-02
          • 2021-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多