Javascript 有时,If语句中没有任何值为true
我有这些基于Math.random函数的If语句,它在大多数情况下都有效,但有时没有任何结果是真的 我也尝试过改变布尔语句比较的数字,也尝试过改变Math.random乘以的数字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?');
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时,是的。什么也跑不了。