Javascript返回和if / else

时间:2015-04-08 15:04:09

标签: javascript

对于以下代码,我继续Scissors获取alert。我不确定我在这里做错了什么。

var computerChoice = Math.random();

var newChoice = function (computerChoice) {
    if (computerChoice <= 0.34) {
        var newChoice = "rock";
        return newChoice;
    } else if ((computerChoice >= 0.35) && (computerChoice <= 0.66)) {
        var newChoice = "paper";
        return newChoice;
    } else {
        var newChoice = "scissors";
        return newChoice;
    }

}
var newerChoice = newChoice();
alert(newerChoice);

7 个答案:

答案 0 :(得分:2)

当您调用参数时,您没有将参数传递给newChoice,因此参数 computerChoice的值为undefinedundefined <= 0.34false,与其他比较相同。

两种可能的解决方案是:

  • 从函数中删除参数,以便computerChoice引用全局变量。目前参数 shadows 具有相同名称的外部变量。
  • (更好)用参数调用函数。

Learn more about functions

答案 1 :(得分:1)

newChoice方法的computerChoice参数为undefined,因为调用newChoice()中没有传递任何内容。 如果您想传递先前生成的数字,可以按以下方式执行:

&#13;
&#13;
var computerChoice = Math.random();

var newChoice = function(computerChoice) {
  if (computerChoice <= 0.34) {
    return "rock";
  } else if ((computerChoice >= 0.35) && (computerChoice <= 0.66)) {
    return "paper";
  } else {
    return "scissors";
  }
}
var newerChoice = newChoice(computerChoice);
alert(newerChoice);
&#13;
&#13;
&#13;

答案 2 :(得分:1)

对变量和参数似乎有点混淆。这是一些有效的代码...

var newChoice = function (choice) {
    if (choice <= 0.34) {
        return "rock";
    } else if (choice <= 0.66) {
        return "paper";
    } else {
        return "scissors";
    }
};

var computerChoice = Math.random();
var newerChoice = newChoice(computerChoice);
alert(newerChoice);

传递给newChoice的值是参数choice。我删除了&&,因为它们不是必需的。如果选择不是&lt; = 0.34那么它必须大于0.34,因此以后不需要检查。

computerChoice是一个随机值变量,作为参数传递给函数。

这是一个工作小提琴的例子......

http://jsfiddle.net/ArchersFiddle/0dfhoa63/

答案 3 :(得分:0)

尽管将其声明为参数,但您实际上并未将computerChoice作为变量传递给函数。而不是var newerChoice = newChoice();var newerChoice = newChoice(computerChoice);。我认为该函数将查找computerChoice作为参数,而不是查看之前的声明。在javascript中查找变量范围。

答案 4 :(得分:0)

您的newChoice函数需要一个参数。因此你需要给它一个

var newerChoice = newChoice(computerChoice);

另外,我相信在第一个if语句中,你想要newChoice = "rock";,而不是computerChoice = "rock";

答案 5 :(得分:-1)

var newerChoice = newChoice(Math.random());

答案 6 :(得分:-1)

好好看看这一行:

var newChoice = function (computerChoice) {

您创建了一个名为newChoice的函数,并且需要一个名为computerChoice的参数。现在让我们看看你以后如何执行该功能。

var newerChoice = newChoice();

您执行函数newChoice,但这次没有将computerChoice作为参数传递。

解决方案

你可以做的很容易。更改以下内容:

var newChoice = function (computerChoice) {

var newChoice = function () {

并通过向您的函数添加newChoice,使computerChoice函数为computerChoice = Math.random();生成新值。像这样:

&#13;
&#13;
var computerChoice = Math.random();

var newChoice = function () {
computerChoice = Math.random();
    if (computerChoice <= 0.34) {
        var computerChoice = "rock";
        return newChoice;
    } else if ((computerChoice >= 0.35) && (computerChoice <= 0.66)) {
        var newChoice = "paper";
        return newChoice;
    } else {
        var newChoice = "scissors";
        return newChoice;
    }

}
var newerChoice = newChoice();
alert(newerChoice);
&#13;
&#13;
&#13;