函数中的代码将不会在函数中运行。如果在函数外部编写则有效

时间:2018-11-03 20:15:13

标签: javascript function while-loop

我当前的作业有一些问题。

(while循环)函数startGame()中的代码在函数内部编写时不会运行。如果删除函数声明,它将按预期工作。我究竟做错了什么?

let playerScore = 0;
let computerScore = 0;
let playerSelection;
let computerSelection;
let i = 0;

function startGame() {
  while (i < 5) { // This part wont run when used inside function (){}
    playRound();
    i += 1;
  }
}
/*
for (i = 0; i < 6; i++) {
  playRound();
}
*/

/* NOTE TO SELF:
Can't do call to function before declaring variables. 
Since they then would be undefined during runtime. */

function playRound() {
  playerSelection = prompt();
  computerSelection = computerPlay();
  if (playerSelection.trim() === computerSelection.trim()) {
    console.log("Round is Equal")

  } else if (playerSelection === "Scissor" && computerSelection === "Paper") {
    playerScore += 1;
    console.log("Player score is:" + " " + playerScore + " " + "Player wins round");

  } else if (playerSelection === "Paper" && computerSelection === "Scissor") {
    computerScore += 1;
    console.log("Computer score is:" + " " + computerScore + " " + "Computer win round");

  } else if (playerSelection === "Rock" && computerSelection === "Scissor") {
    playerScore += 1;
    console.log("Player score is:" + " " + playerScore + " " + "Player wins round");

  } else if (playerSelection === "Scissor" && computerSelection === "Rock") {
    computerScore += 1;
    console.log("Computer score is:" + " " + computerScore + " " + "Computer win round");

  } else if (playerSelection === "Paper" && computerSelection === "Rock") {
    playerScore += 1;
    console.log("Player score is:" + " " + playerScore + " " + "Player wins round");

  } else if (playerSelection === "Rock" && computerSelection === "Paper") {
    computerScore += 1;
    console.log("Computer score is:" + " " + computerScore + " " + "Computer win round");

  }
}

function computerPlay() {
  let randomNumber = Math.floor(Math.random() * 3) + 1;
  switch (randomNumber) {
    case 1:
      randomNumber = "Rock";
      return randomNumber;
    case 2:
      randomNumber = "Scissor";
      return randomNumber;
    case 3:
      randomNumber = "Paper"
      return randomNumber;
  }

}

3 个答案:

答案 0 :(得分:1)

您必须调用startGame函数:

startGame()

答案 1 :(得分:1)

您需要对startGame()函数进行单独调用。

let playerScore = 0;
let computerScore = 0;
let playerSelection;
let computerSelection;
let i = 0;

function startGame() {
  while (i < 5) { // This part wont run when used inside function (){}
    playRound();
    i += 1;
  }
}

startGame();

/*
for (i = 0; i < 6; i++) {
  playRound();
}
*/

/* NOTE TO SELF:
Can't do call to function before declaring variables. 
Since they then would be undefined during runtime. */

function playRound() {
  playerSelection = prompt();
  computerSelection = computerPlay();
  if (playerSelection.trim() === computerSelection.trim()) {
    console.log("Round is Equal")

  } else if (playerSelection === "Scissor" && computerSelection === "Paper") {
    playerScore += 1;
    console.log("Player score is:" + " " + playerScore + " " + "Player wins round");

  } else if (playerSelection === "Paper" && computerSelection === "Scissor") {
    computerScore += 1;
    console.log("Computer score is:" + " " + computerScore + " " + "Computer win round");

  } else if (playerSelection === "Rock" && computerSelection === "Scissor") {
    playerScore += 1;
    console.log("Player score is:" + " " + playerScore + " " + "Player wins round");

  } else if (playerSelection === "Scissor" && computerSelection === "Rock") {
    computerScore += 1;
    console.log("Computer score is:" + " " + computerScore + " " + "Computer win round");

  } else if (playerSelection === "Paper" && computerSelection === "Rock") {
    playerScore += 1;
    console.log("Player score is:" + " " + playerScore + " " + "Player wins round");

  } else if (playerSelection === "Rock" && computerSelection === "Paper") {
    computerScore += 1;
    console.log("Computer score is:" + " " + computerScore + " " + "Computer win round");

  }
}

function computerPlay() {
  let randomNumber = Math.floor(Math.random() * 3) + 1;
  switch (randomNumber) {
    case 1:
      randomNumber = "Rock";
      return randomNumber;
    case 2:
      randomNumber = "Scissor";
      return randomNumber;
    case 3:
      randomNumber = "Paper"
      return randomNumber;
  }

}

答案 2 :(得分:1)

您已经创建了一个名为startGame()的函数,但未在任何地方调用它,这就是为什么该函数未在该函数中运行的原因。

就像您在循环中调用playRound()的方式一样,您还必须调用startGame()使其运行。