如果声明中需要声明或声明

时间:2019-11-10 00:53:37

标签: javascript if-statement

因此,我正在研究一些代码,以Javascript构建一个简单的应用程序,在该应用程序中,计算机将随机数分配给石头,纸张,剪刀并随机选择,然后还具有用户选择项。代码未运行不确定原因。

我尝试将分号添加到defineWinner函数中主要if语句内部的if语句的末尾。

const getUserChoice = userInput => {
  userInput = userInput.toLowerCase();
  if (userInput === 'rock' || userInput === 'paper' || userInput === 'scissors'){
    return userInput;
  }else {
    console.log('Error, you must type rock, paper, or scissors');
  }
}

function getComputerChoice(){
  var randomNumber = Math.floor(Math.random() * 3);
  switch (randomNumber) {
    case 0:
      return 'rock';
    case 1:
      return 'paper';
    case 2:
      return 'scissors';
  }
}

function determineWinner(userChoice, computerChoice){
  if(userChoice === computerChoice){
    return 'This game is a tie!'
  } else if(userChoice === 'rock'){
      if(computerChoice === 'paper'){
        return 'The computer has won!';
    }else{
      return 'The user has won';
    }
  } else if(userChoice === 'paper'){
      if(computerChoice === 'scissors'){
        return 'The computer has won!';
      }else(computerChoice === 'rock');{
        return 'The user has won!';
      }
    }else(userChoice === 'scissors');{
      if(computerChoice === 'rock'){
        return 'The computer has won!';
      }else(computerChoice === 'paper');{
        return 'The user has won!';
        }
    }
  } 
}

console.log(determineWinner('paper', 'scissors'));

在脚本末尾运行console.log时,它应该显示计算机已经赢了。

2 个答案:

答案 0 :(得分:1)

由于所有if情况都只是返回,因此您无需使用else,因为if情况将始终返回。像这样:

function determineWinner(userChoice, computerChoice){
  if (userChoice === computerChoice) {
    return 'This game is a tie!'
  }
  if (userChoice === 'rock') {
    if(computerChoice === 'paper') {
      return 'The computer has won!';
    }
    return 'The user has won';
  }
  if (userChoice === 'paper') {
    if(computerChoice === 'scissors'){
      return 'The computer has won!';
    }
    return 'The user has won!';
  }
  if (userChoice === 'scissors') {
    if(computerChoice === 'rock') {
      return 'The computer has won!';
    }
    return 'The user has won!';
  } 
}

另一种方法是仅在函数末尾返回如下答案:

function determineWinner(userChoice, computerChoice){
  const results = [
    'This game is a tie!', 
    'The computer has won!', 
    'The user has won!' 
  ];
  let winner;
  if (userChoice === computerChoice) winner = 0;
  else if (userChoice === 'rock') {
    winner = computerChoice === 'paper' ? 1 : 2;
  }
  else if (userChoice === 'paper') {
    winner = computerChoice === 'scissors' ? 1 : 2;
  }
  else if (userChoice === 'scissors') {
    winner = computerChoice === 'rock' ? 1 : 2;
  } 
  return results[winner];
}

答案 1 :(得分:0)

const getUserChoice = userInput => {
  userInput = userInput.toLowerCase();
  if (userInput === 'rock' || userInput === 'paper' || userInput === 'scissors'){
    return userInput;
  }else {
    console.log('Error, you must type rock, paper, or scissors');
  }
}

function getComputerChoice(){
  var randomNumber = Math.floor(Math.random() * 3);
  switch (randomNumber) {
    case 0:
      return 'rock';
    case 1:
      return 'paper';
    case 2:
      return 'scissors';
  }
}

function determineWinner(userChoice, computerChoice){
  if(userChoice === computerChoice){
    return 'This game is a tie!'
  } else if(userChoice === 'rock'){
      if(computerChoice === 'paper'){
        return 'The computer has won!';
    }else if(computerChoice === 'scissors'){
      return 'The user has won';
    }
  } else if(userChoice === 'paper'){
      if(computerChoice === 'scissors'){
        return 'The computer has won!';
      }else if(computerChoice === 'rock'){
        return 'The user has won!';
      }
    }else if(userChoice === 'scissors'){
      if(computerChoice === 'rock'){
        return 'The computer has won!';
      }else if(computerChoice === 'paper'){
        return 'The user has won!';
        }
    }
  } 


console.log(determineWinner('paper', 'scissors'));
相关问题