在声明为空变量的函数中,switch 语句如何自动将其 return 值分配给空变量?

In a function with a declared empty variable, how does a switch statement automatically assign its return value to the empty variable?

全部。我是 JavaScript 的新手 - 目前正在尝试理解 switch 语句。当我没有对我的 result 变量赋值时,我无法理解我如何仍然得到 return 值。 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 是一个空字符串 "",但它立即显示以下值...没有任何赋值...!

您正在 return 切换语句。在 val 等于 1 的情况下,switch 语句永远不会超过情况 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 语句也意味着 break 是多余的:

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

那些 break 陈述只是终止案件所必需的,如果你没有 return 退出案件:

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

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