Javascript 如何为3个变量生成if语句?

Javascript 如何为3个变量生成if语句?,javascript,if-statement,return,Javascript,If Statement,Return,我在一些代码上遇到了一些问题,但我已经设法找到了问题的根源,我几乎找到了解决问题的方法。当我将最大猜测末尾的数字更改为最大猜测1、最大猜测2和最大猜测3时,代码工作正常。然而,当我复制了它并更改了最大猜数末尾的数字时,猜数将计为三,而它应该只有一个 如何使下面的代码适用于所有三个最大猜测 最大猜测1,最大猜测2,最大猜测3 number_of_guesses++; if (number_of_guesses > maximum_guesses3) { window.alert("Sorr

我在一些代码上遇到了一些问题,但我已经设法找到了问题的根源,我几乎找到了解决问题的方法。当我将最大猜测末尾的数字更改为最大猜测1、最大猜测2和最大猜测3时,代码工作正常。然而,当我复制了它并更改了最大猜数末尾的数字时,猜数将计为三,而它应该只有一个

如何使下面的代码适用于所有三个最大猜测

最大猜测1,最大猜测2,最大猜测3

number_of_guesses++; 
if (number_of_guesses > maximum_guesses3)
{
window.alert("Sorry, you have run out of guesses!");
return;
}

number_of_guesses++; 
if (number_of_guesses > maximum_guesses2)
{
window.alert("Sorry, you have run out of guesses!");
return;
}

number_of_guesses++; 
if (number_of_guesses > maximum_guesses1)
{
window.alert("Sorry, you have run out of guesses!");
return;
}

我需要把以上三个都放到一段代码中。最大猜测1在45次猜测时停止,最大猜测2在40次猜测时停止,最大猜测3在35次猜测时停止,但当我将它们放在一起时,它们不会停止。

您可能想做的是将其分离到另一个函数中,您的函数应该有名称空间来构建您的应用程序。您可以使用找到的帮助器库来执行此操作

您可以尝试将代码重构为更结构化的代码,如下所示:

模块控制器.js

dali.util.namespace('myCompany.myApp.module');

myCompany.myApp.module.ClassName = function(maxGuesses) {
  this.maxGuesses = maxGuesses;
  this.numberOfGuesses = 0;
  this.alertMessage = 'Sorry, you have run out of guesses!';
};

myCompany.myApp.module.ClassName.prototype.hasMoreGuessesLeft = function() {
  return this.numberOfGuesses < maxGuesses;
};

myCompany.myApp.module.ClassName.prototype.guess = function(guess) {
  this.numberOfGuesses++;

  if(this.hasMoreGuessesLeft()) {
    //do something with the guess?
    console.log(guess);
  } else {
    window.alert(this.alertMessage + ' - ' + this.maxGuesses + ' max.');
  }
};
dali.util.namespace('myCompany.myApp.module');
myCompany.myApp.module.ClassName=函数(maxGuesses){
this.maxGuesses=maxGuesses;
此参数为0.numberOfGuesses=0;
this.alertMessage='对不起,您已经猜不到了!';
};
myCompany.myApp.module.ClassName.prototype.HasMoreGuessLeft=函数(){
返回此值。numberOfGuesses
使用它(导入模块控制器.js):

var最大猜测值1=10;
var instance=new myCompany.myApp.module.ClassName(最大猜数1);
风险价值金额=50;
for(int i=0;i
然后,您可以相应地传入
最大猜测1
最大猜测2
最大猜测3

我希望这有帮助

Rhys

您应该使用它来解决此问题

例如,您的解决方案可能如下所示(如果我理解正确):


我已经将问题的三个部分进行了编辑,我正试图合并成一个部分。我刚刚尝试了你的建议。现在,我的每一个最大猜测都停止在34。最大猜测1应该在45时停止,最大猜测2应该在40时停止,最大猜测3应该在35时停止。我刚刚试过,但现在我按下按钮猜测什么都没有发生。无论如何,谢谢。请检查我的代码在做什么,并从你含糊不清的问题中理解,这是我能为你做的最好的事情。我也试着向您展示一些OOJS概念。这就是我目前所拥有的一切。它分为三个部分,第一部分是游戏介绍,每个难度都有单选按钮。第二部分是游戏本身,最后是问题所在的minefield.js。当我将最大猜测值1更改为2或3时,它的工作方式正是我所希望的。我唯一的问题是试图把它们放在一起,当我现在这样做的时候,它忽略了已经选择的任何困难,直接转到45。简单是45次猜测,中间是40次猜测,高级是35次猜测。尝试在代码中使用console.log(variableName)并使用google chrome developer console来帮助调试。我刚刚尝试过这一点,但我所有的猜测在应该停止时都变成了45次猜测。最大猜测1应在45处停止,最大猜测2应在40处停止,最大猜测3应在35处停止。您提醒了我以前看到的一些内容。尝试使用
&&
而不是
|
var maximum_guesses1 = 10;
var instance = new myCompany.myApp.module.ClassName(maximum_guesses1);
var guessAmount = 50;
for (int i = 0; i < guessAmount; i++) {
  instance.guess('Ive guessed ' + i + ' time(s)');
}
number_of_guesses++; 
if ( number_of_guesses > maximum_guesses1 ||
     number_of_guesses > maximum_guesses2 ||
     number_of_guesses > maximum_guesses3 ) {
  window.alert("Sorry, you have run out of guesses!");
  return;
}