Javascript控制台不打印称为函数

时间:2013-11-12 03:53:25

标签: javascript

我刚开始学习JavaScript,我正在努力改进我制作的“Rock,Scissors,Paper”游戏(见下面的代码)。

我尝试在没有最后一个函数input()的情况下构建游戏。但我了解到我只能在函数中使用“return”。当我使用console.log()打印函数时,它没有input()函数。

我想学习如何使用input()函数,以及能够在input()中调用gamePlay()。任何帮助将不胜感激。

var gamePlay = function (userGameChoice) {
    var computerChoice = Math.random(0, 1);
    if (computerChoice < 0.34) {
        computerChoice = "rock";
    } else if (computerChoice <= 0.67) {
        computerChoice = "paper";
    } else {
        computerChoice = "scissors";
    }
    var compare = function (choice1, choice2) {
        if (choice1 === choice2) {
            return "The result is a tie!";
        }
        if (choice1 === "rock") {
            if (choice2 === "scissors") {
                return "rock wins";
            } else {
                return "paper wins";
            }
        }
        if (choice1 === "paper") {
            if (choice2 === "rock") {
                return "paper wins";
            } else {
                return "scissors wins";
            }
        }
        if (choice1 === "scissors") {
            if (choice2 === "rock") {
                return " rock wins";
            } else {
                return "scissors wins"
            }
        }
    }

    compare(userGameChoice, computerChoice);

}

var input = function (userChoice) {
    if (userChoice === "rock") {
        return gamePlay("rock");
    } else if (userChoice === "paper") {
        return gamePlay("paper");
    } else if (userChoice === "scissors") {
        return gamePlay("scissors");
    } else {
        return "Invalid input";
    }
}
input(prompt("Do you choose rock, paper or scissors?"));

2 个答案:

答案 0 :(得分:1)

您的gamePlay函数未返回值。它调用compare确实返回一个值,但由于gamePlay没有返回语句,它实际返回undefined

如果你console.log(gamePlay("rock"));,你会看到undefined

附注:输入功能也可以使用switch语句而不是if / then / elses。

答案 1 :(得分:-1)

我想你想做这样的事情:

var options    = ["rock", "scissors", "paper"];
var userinput  = prompt("Do you choose rock, paper or scissors?");
var gameResult = "Invalid Input";

if (options.indexOf(userinput) > -1) {
    gameResult = gamePlay(userinput);
}

alert(gameResult);

这将获取用户输入并将其与有效选项列表进行比较。如果它存在(>-1),那么它将运行gamePlay方法,将结果存储在变量gameResult