【问题标题】:In a function with a declared empty variable, how does a switch statement automatically assign its return value to the empty variable?在声明了空变量的函数中,switch语句如何自动将其返回值分配给空变量?
【发布时间】:2019-09-21 20:52:53
【问题描述】:

全部。我对 JavaScript 相当陌生 - 目前正在尝试理解 switch 语句。当我没有对我的result 变量进行赋值时,我无法理解我是如何获得返回值的。 switch 语句嵌套在一个函数中。

function caseInSwitch(val) {
  let result = "";
  switch(val) {
    case 1:
      return "alpha";
      break;
    case 2:
      return "beta";
      break;
    case 3:
      return "gamma";
      break;
    case 4:
      return "delta";
      break;
  }

  return result;  
}

caseInSwitch(1);

我希望result 是一个空字符串"",但它会立即显示以下值...没有任何分配...!

【问题讨论】:

    标签: javascript function switch-statement return conditional


    【解决方案1】:

    你在 switch 语句中returning。在val等于1的情况下,switch语句永远不会超过case 1。函数不是return result,而是执行return "alpha"

    该 return 语句终止函数:

    function caseInSwitch(val) {
      console.log("1: function start. Val:", val);
    
      let result = "";
      
      console.log("2: before switch");
      switch(val) {
        case 1:
          console.log("3: before return alpha");
          return "alpha";
          console.log("4: after return alpha");
          break;
        case 2:
          return "beta";
          break;
        case 3:
          return "gamma";
          break;
        case 4:
          return "delta";
          break;
      }
      console.log("5: after switch");
    
      return result;  
    }
    
    var finalResult = caseInSwitch(1);
    console.log("Final result:", finalResult);

    如您所见,只有语句 1-3 被记录。

    switch 中的return 语句也意味着breaks 是多余的:

    switch(val) {
        case 1:
            return "alpha";
        case 2:
            return "beta";
        case 3:
            return "gamma";
        case 4:
            return "delta";
    }
    

    那些break 语句仅用于终止案件,如果您不退出案件:

    let variable = "";
    switch(val) {
        case 1:
            variable = "alpha";
            break;
        case 2:
            variable = "beta";
            break;
        case 3:
            variable = "gamma";
            break;
        case 4:
            variable = "delta";
            break;
    }
    console.log(variable);
    

    【讨论】:

    • 哇,非常感谢!你提供了足够多的信息。我真的很感激。基本上,在函数中,return 语句将终止函数,无论它在哪里。
    【解决方案2】:

    答案很简单,在 caseInSwitch 中,您将 1 作为val 的值传递。在 switch 块中,1 与 case 1 匹配,函数返回 alpha。请记住 switch 块中的 return,使控件从函数本身返回,而不仅仅是从 switch 块中返回

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多