【问题标题】:function: if with interrupting, return功能:如果有中断,返回
【发布时间】:2020-07-28 03:55:06
【问题描述】:

我无法从我的 prompt 函数中获取值

如果用户输入等于 6 个变量之一,我需要该函数正常工作,如果输入不匹配,则在“if”条件下停止。我对&&, || !, ==, === 进行了很多操作,但没有任何效果,console.log 给我的结果与我输入的结果相同(但首字母大写,哈哈)

//variables
let r = "Rock";
let p = "Paper";
let s = "Scissor";
let rl = "rock";
let pl = "paper";
let sl = "scissor";
const weapon = [r, p, s];
let playerChoiceUnchecked = prompt("Rock, Paper, or Scissor?");
//functions
function playerChoice(checkPlayer) {
 if (playerChoiceUnchecked == ((!r && !rl) && (!p && !pl) && (!s && !sl))) {
    alert("There's no such weapon");
    return false;
 } else {
    let checkPlayer = playerChoiceUnchecked.charAt(0).toUpperCase() + playerChoiceUnchecked.slice(1);
    //return checkPlayer;
    console.log(checkPlayer); //debug for playerChoice, second part DONE
 }
}

【问题讨论】:

  • 在您的示例中,该函数已声明,但未调用。 Anurag 的答案调用了最后一行中的函数。请尝试一下
  • 是的,我的错,我太新手了。 Anurag 的回答是很好的解决方案,谢谢
  • 只是缺少一点解释 :) 祝你有美好的一天!

标签: javascript if-statement return prompt


【解决方案1】:

您的代码可以简化:

const weapons = ["rock", "paper", "scissor"]

function playerChoice() {
  let playerChoiceUnchecked = prompt("Rock, Paper, or Scissor?");
  if ( !weapons.includes( playerChoiceUnchecked.toLowerCase() ) ) {
    alert("There's no such weapon");
  } else {
    let checkPlayer = playerChoiceUnchecked.charAt(0).toUpperCase() + playerChoiceUnchecked.slice(1);
    console.log(checkPlayer);
  }
}

playerChoice()

【讨论】:

    【解决方案2】:

    如果我理解您的问题,您需要一个函数来验证选项是否有效。如果是这种情况,您可以通过多种方式执行此操作。这里有两种更简单的方法:

    1st:(调用这个函数,看看选项是否有效,函数会返回true=valid/false=invalid)

    function verifyOptionSelected(option){
        var isValid = false;
        if (option != null){
            switch(option.toLowerCase()){
                case "rock":
                case "paper":
                case "scissor":
                    isValid = true;
                    break;
                default:
                    isValid = false;
            }
        }
    
        return isValid;
    }
    

    第二个:(我认为方法相同,但编码方式更好)

    function verifyOptionSelected(option){
        var validOptions = ["rock", "paper", "scissor"];
        return option != null && validOptions.indexOf(option.toLowerCase()) >= 0;    
    }
    

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      相关资源
      最近更新 更多