【问题标题】:JS function isn't returning the expected result [duplicate]JS函数没有返回预期的结果[重复]
【发布时间】:2018-10-24 19:22:14
【问题描述】:

此函数提示用户选择rockpaperscissors,并将输入更改为小写。如果用户没有选择上述任何一项,则返回 If 语句。但如果选择正确,则返回 else 语句。

但是,如果用户输入适当的响应,则 else 语句不会运行。

function player() {
    let pick = prompt("Rock, paper, or scissors?");
    pick = pick.toLowerCase();

    if ((pick !== 'rock') || (pick !== 'paper') || (pick !== 'scissors')) {
        return `Please pick a valid choice ${pick}`;
    } else {
        return pick;
    }
}

如果我输入的不是石头/纸/剪刀,我希望 if 语句运行。但是如果我输入 rock/paper/scissors,我希望 else 语句会运行。

但是,无论如何,else 语句永远不会运行。

【问题讨论】:

  • "rock" !== "paper"。使用&&

标签: javascript if-statement return prompt


【解决方案1】:

使用&& 而不是||,否则那里的条件永远为真。但更好的是,您可以通过将有效选择放入一个数组并使用 includes 来使代码更清晰:

const validPicks = ['rock', 'paper', 'scissors'];
function player() {
  const pick = prompt("Rock, paper, or scissors?").toLowerCase();
  if (!validPicks.includes(pick)) {
    return `Please pick a valid choice ${pick}`;
  } else {
    return pick;
  }
}
console.log(player());

【讨论】:

  • 使用 && 绝对有效。这是一些特定于 JS 的东西,我需要在这种情况下使用 &&,还是适用于其他语言?使用数组是个好主意,今天早些时候我在使用另一个函数(与这个程序相关,哈哈)遇到问题时向我提出了建议,但我通常不使用数组,所以我必须熟悉自己。
  • 不,它不是特定于 Javascript 的,它只是简单的逻辑。在pick'rock' 的情况下考虑if ((pick !== 'rock') || (pick !== 'paper'))。然后,该表达式简化为if (false || true),解析为true
猜你喜欢
  • 1970-01-01
  • 2019-10-08
  • 2016-01-22
  • 2016-06-28
  • 2013-05-02
  • 1970-01-01
  • 2017-09-07
  • 2021-01-27
  • 1970-01-01
相关资源
最近更新 更多