Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有时,If语句中没有任何值为true_Javascript - Fatal编程技术网

Javascript 有时,If语句中没有任何值为true

Javascript 有时,If语句中没有任何值为true,javascript,Javascript,我有这些基于Math.random函数的If语句,它在大多数情况下都有效,但有时没有任何结果是真的 我也尝试过改变布尔语句比较的数字,也尝试过改变Math.random乘以的数字 var dodge = { dodgeValue: function() { return Math.floor(Math.random() * 10) + 1 }, roll: function() { console.log('ROLL AFTER DODGE?');

我有这些基于Math.random函数的If语句,它在大多数情况下都有效,但有时没有任何结果是真的

我也尝试过改变布尔语句比较的数字,也尝试过改变Math.random乘以的数字

var dodge = {
    dodgeValue: function() {
      return Math.floor(Math.random() * 10) + 1
    },
    roll: function() {
      console.log('ROLL AFTER DODGE?'); //DELETE THIS
      if (this.dodgeValue() <= 5) {
        console.log('Ball Rolls to Person One');
        dodgeBall.ball.position = 'on ground';
        dodgeBall.personOne.ball();

      }
      if (this.dodgeValue() >= 5) {
        console.log('Ball Rolls to Person Two');
        dodgeBall.ball.position = 'on ground';
        dodgeBall.personTwo.ball();

      }
    },

这是有相同问题的两个部分之一,另一个在复制和粘贴时非常混乱,因此我将其忽略,但如果有人知道为什么会发生这种情况或如何修复它,那将非常好。

您正在生成两个随机数。每次你写这个时都会有一个新的。dodgeValue

此外,如果值正好为5,则两个分支都将运行-这可能不是预期的行为


您应该执行类似于让dodge=this.dodgeValue;然后使用dodge生成两个随机数。每次你写这个时都会有一个新的。dodgeValue

此外,如果值正好为5,则两个分支都将运行-这可能不是预期的行为


您应该执行类似于让dodge=this.dodgeValue;然后使用if-dodge这是因为你调用了dodgeValue两次,它调用了random两次

暂时忽略计算机中的随机数这一事实,让我们看看当您两次调用dodgeValue以获得两个随机数时会发生什么

您可以从该代码中获得以下数字:

4. 6 8 6 2 在第一种情况下,第一个if将为true并执行,因为4 5 first if为false,8>=5秒if为true

那么,在第三种情况下会发生什么?两个if都将为假,因为6>5第一个if为假,2<5第二个if为假

如果这是您希望它工作的方式,而我假设不是这样,请保持您的代码不变。如果没有,根据您的需要,您有两种选择

如果以后需要存储dodgeValue的输出,可以使用变量:

var dodge = {
    dodgeValue: function() {
      return Math.floor(Math.random() * 10) + 1
    },
    roll: function() {
      console.log('ROLL AFTER DODGE?'); //DELETE THIS
      var val = this.dodgeValue();
      if (val <= 5) {
        console.log('Ball Rolls to Person One');
        dodgeBall.ball.position = 'on ground';
        dodgeBall.personOne.ball();

      }
      if (val >= 5) {
        console.log('Ball Rolls to Person Two');
        dodgeBall.ball.position = 'on ground';
        dodgeBall.personTwo.ball();

      }
    },
如果你只需要它们是对立的,那么就用else子句代替

var dodge = {
    dodgeValue: function() {
      return Math.floor(Math.random() * 10) + 1
    },
    roll: function() {
      console.log('ROLL AFTER DODGE?'); //DELETE THIS
      if (this.dodgeValue() <= 5) {
        console.log('Ball Rolls to Person One');
        dodgeBall.ball.position = 'on ground';
        dodgeBall.personOne.ball();

      } else {
        console.log('Ball Rolls to Person Two');
        dodgeBall.ball.position = 'on ground';
        dodgeBall.personTwo.ball();

      }
    },

这是因为你调用dodgeValue两次,它调用random两次

暂时忽略计算机中的随机数这一事实,让我们看看当您两次调用dodgeValue以获得两个随机数时会发生什么

您可以从该代码中获得以下数字:

4. 6 8 6 2 在第一种情况下,第一个if将为true并执行,因为4 5 first if为false,8>=5秒if为true

那么,在第三种情况下会发生什么?两个if都将为假,因为6>5第一个if为假,2<5第二个if为假

如果这是您希望它工作的方式,而我假设不是这样,请保持您的代码不变。如果没有,根据您的需要,您有两种选择

如果以后需要存储dodgeValue的输出,可以使用变量:

var dodge = {
    dodgeValue: function() {
      return Math.floor(Math.random() * 10) + 1
    },
    roll: function() {
      console.log('ROLL AFTER DODGE?'); //DELETE THIS
      var val = this.dodgeValue();
      if (val <= 5) {
        console.log('Ball Rolls to Person One');
        dodgeBall.ball.position = 'on ground';
        dodgeBall.personOne.ball();

      }
      if (val >= 5) {
        console.log('Ball Rolls to Person Two');
        dodgeBall.ball.position = 'on ground';
        dodgeBall.personTwo.ball();

      }
    },
如果你只需要它们是对立的,那么就用else子句代替

var dodge = {
    dodgeValue: function() {
      return Math.floor(Math.random() * 10) + 1
    },
    roll: function() {
      console.log('ROLL AFTER DODGE?'); //DELETE THIS
      if (this.dodgeValue() <= 5) {
        console.log('Ball Rolls to Person One');
        dodgeBall.ball.position = 'on ground';
        dodgeBall.personOne.ball();

      } else {
        console.log('Ball Rolls to Person Two');
        dodgeBall.ball.position = 'on ground';
        dodgeBall.personTwo.ball();

      }
    },
当第一个随机数大于5,第二个随机数小于5时,是的。什么都不会运行。当第一个随机数大于5,第二个随机数小于5时,是的。什么也跑不了。