【问题标题】:How can I pass a function parameter as a switch statement case value?如何将函数参数作为 switch 语句 case 值传递?
【发布时间】:2019-10-08 19:35:43
【问题描述】:

我正在测试 JavaScript 中的 switch 语句,并希望将其写入函数以重复执行。

我一直在编写一个基本函数,它以“男性”或“女性”作为参数,并将其中一个或另一个记录到控制台:“它是一个男孩!”或“它是一个女孩!”,分别。

function checkGender(gender){
    gender = "";
    switch (gender){
    case "male":
     console.log("it's a boy!");
     // have also tried using a return statement.
     break;
    case "female":
     console.log("it's a girl!");
     break;
    }
   }

    checkGender("male");
    // => should return "it's a boy!".

预期:调用该函数应将日志语句返回到控制台。

实际结果:控制台返回“未定义”作为值。

【问题讨论】:

  • 因为你是空的gender = "";的性别
  • 你没有从 checkGender 返回任何东西,甚至没有返回 console.log() 的结果(巧合的是返回 undefined)。

标签: javascript function switch-statement


【解决方案1】:

您通过在功能块内设置gender='' 来覆盖提供给功能的gender 值。基于新的gender 值(为空),不存在任何案例,因此控制台中没有任何内容。不要重置提供给您的函数的 gender 值,它会起作用:

function checkGender(gender) {
  switch (gender) {
    case "male":
      console.log("it's a boy!");
      // have also tried using a return statement.
      break;
    case "female":
      console.log("it's a girl!");
      break;
  }
}

checkGender("male");

【讨论】:

    【解决方案2】:

    您将变量gender 设置为空"",因此case 函数将看不到男性或女性,因此将不返回任何内容,或者undefined

    【讨论】:

      【解决方案3】:

      函数的第一条指令会影响gender 参数的空字符串。因此,没有一个案例匹配。

      顺便说一句,checkGender 函数不返回任何内容。它只执行console.log(如果开关的一种情况匹配)。它的返回值总是未定义的。

      【讨论】:

      • 我打算将函数中的第一行用作默认大小写值。如何在 switch 语句中这样做。 (如果我的问题仍然不清楚,我的意思是问我如何为“男性”或“女性”以外的任何其他情况写一个“其他”声明?)。
      • 通过在你的 switch 语句中添加一个“默认”大小写。
      • 抱歉!这是一个典型的例子,说明不阅读文档会如何愚弄 SO 用户。
      猜你喜欢
      • 1970-01-01
      • 2017-07-17
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 2013-03-22
      • 2011-08-15
      相关资源
      最近更新 更多