Javascript Return and if/else

Javascript Return and if/else

本文关键字:else if and Return Javascript      更新时间:2023-09-26

对于以下代码,我不断为alert取回Scissors。我不知道我在这里做错了什么。

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);

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

两种可能的解决方案是:

  • 从函数中删除参数,以便computerChoice引用全局变量。当前,参数对具有相同名称的外部变量进行阴影处理
  • (更好)用参数调用函数

了解有关函数的更多信息。

变量和参数之间似乎有点混淆。这里有一些工作代码。。。

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。我删掉了&&,因为它们不是必需的。如果选择不是<=0.34,那么它必须大于0.34,这样以后就不需要检查了。

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

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

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

newChoice方法的computerChoice参数是undefined,因为调用newChoice()中没有传递任何内容。如果你想传递之前生成的号码,你可以按照以下方式进行:

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);

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

newChoice函数需要一个参数。所以你必须给它一个

var newerChoice = newChoice(computerChoice);

此外,我相信在第一个if语句中,您希望有newChoice = "rock";,而不是computerChoice = "rock";

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

仔细看一下这一行:

var newChoice = function (computerChoice) {

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

var newerChoice = newChoice();

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

解决方案

你能做的事相当容易。更改以下内容:

var newChoice = function (computerChoice) {

进入

var newChoice = function () {

通过将computerChoice = Math.random();添加到函数中,使newChoice函数为computerChoice生成一个新值。像这样:

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);