当我在while循环中创建一个随机数作为局部变量时,一切都起作用,但当我生成一个随机数作为全局变量时,我就会陷入无限循环。
我不明白这会有什么不同。目标是用while循环输出所有小于0.7的随机数。
下面是创建无限循环的代码:
let rnd = Math.random();
let continue = true;
while (continue) {
console.log(rnd);
if (rnd > 0.7) {
continue = false;
alert(rnd + ' is bigger than 0.7!');
}
}
下面是有效的代码(唯一改变的是在while循环中生成随机数)。
let continue = true;
while (continue) {
let rnd = Math.random();
console.log(rnd);
if (rnd > 0.7) {
continue = false;
alert(rnd + ' is bigger than 0.7!');
}
}
我不想用另一种循环来创建它,我只是想更好地理解while循环。
2条答案
按热度按时间pvcm50d11#
因为你申报的时候
Math.random()
作为一个变量,它使用一个不变的随机值创建一个绑定。示例:0.8。如果它小于或等于0.7,那么它将导致一个无限循环,因为值不会随着每次迭代而改变。
在第二个例子中,它工作得很好,因为它是在本地声明的,并且它的值随着每次迭代而变化。
希望你能理解。
6l7fqoea2#
这里,在while循环之前,随机数生成器只执行一次。如果th随机数不大于0.7,continue将始终为真,并且它将是一个无限循环。
但是,如果在while循环中本地生成随机数,则在每个循环中都会生成一个新的数,因此您只需等待rnd数>0.7。