【问题标题】:#JavaScript: switch input in a function after lowercase'd input#JavaScript:在小写输入后在函数中切换输入
【发布时间】:2019-07-22 13:12:40
【问题描述】:

在我将输入小写后,我正在尝试使开关在函数中工作。

这是我的代码:

let optie;
const getUserChoise = (userInput) => 
{
 return userInput = userInput.toLowercase;

 switch(userInput){
    case 'rock': return userInput
      break;
      case 'paper': return userInput
      break; 
      case 'scissors': return userInput
      break;
      default :
      console.log(userInput + ' is not an option. Make sure to use: rock, paper or scissors');
  } 

}

getUserChoise('rockwer');

由于某种原因,在小写字母之后,开关不会读取输入。 我试图删除return,但它返回undefined

我刚开始学习 javascript 并且很享受它。 欢迎大家支持。

编辑:谢谢你们的快速回复! 对我来说很清楚。

【问题讨论】:

  • 缺少括号:userInput.toLowercase()。没有它们,您就不是调用函数,而是获取函数本身(它是一个对象)。尝试使用控制台,并检查变量的值。它可以帮助查明此类问题。

标签: javascript switch-statement lowercase arrow-functions


【解决方案1】:

函数将在返回语句后停止执行。因此,您可以将userInput.toLowerCase() 放在括号内,而不是分配userInput,如下所示:

let optie;
const getUserChoise = (userInput) => 
{
 switch(userInput.toLowerCase()){
    case 'rock': return userInput
      break;
      case 'paper': return userInput
      break; 
      case 'scissors': return userInput
      break;
      default :
      console.log(userInput + ' is not an option. Make sure to use: rock, paper or scissors');
  } 

}

getUserChoise('rockwer');

希望这可行:)
编辑:在 Javascript 中,改变函数参数被认为是一种不好的做法,其中一些答案会这样做。

【讨论】:

  • 谢谢你 fifn2 这肯定有效,我对 javascript 很陌生。你能解释一下函数参数的突变是什么吗?
  • 他们的意思是当你用userInput = userInput.toLowerCase() 重新分配userInputuserInput.toLowerCase()。 IMO,使用 switch 语句也是不好的做法;但没关系,因为你是新人。 :)
  • 有一篇关于它的文章here
【解决方案2】:

由于缺少括号 userInput.toLowercase(),变量 userInput 已成为函数定义。由于该代码将进入默认状态,即返回undefined

【讨论】:

    【解决方案3】:

    您的代码只有几个小问题:

    1. return 语句之后的任何内容都无法访问,因此使用您原来的 return userInput = userInput.toLowercase 之后的 switch 语句将不会运行。

    2. String.prototype.toLowerCase 方法拼写为toLowerCase 而不是toLowercase

    3. 您必须调用该方法;例如,toLowerCase()

    这是固定版本:

    const getUserChoise = (userInput) => {
     userInput = userInput.toLowerCase();
    
     switch(userInput){
        case 'rock': return userInput
          break;
          case 'paper': return userInput
          break; 
          case 'scissors': return userInput
          break;
          default :
          console.log(userInput + ' is not an option. Make sure to use: rock, paper or scissors');
      } 
    
    }
    

    【讨论】:

    • 谢谢斯科特 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 2018-10-03
    • 2020-04-06
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多