while循环中的Javascript if语句

while循环中的Javascript if语句,javascript,if-statement,while-loop,increment,Javascript,If Statement,While Loop,Increment,下面您可以找到创建1到80之间随机8个数字的代码。它将随机数放入数字数组并写入div。如果在if括号内增加x,则代码运行时不会出现任何问题。 如果我把“x++”放在If括号外,经过几次运行后,我发现有时它会创建一个相同的随机数,并在numbers数组中找到。然后它跳过,div变为空 在if块中递增x和在if块外递增x之间有什么区别 在if块内: var numbers = [] var luckyNumber; var x = 1; while (x <= 8) { luckyNum

下面您可以找到创建1到80之间随机8个数字的代码。它将随机数放入数字数组并写入div。如果在if括号内增加x,则代码运行时不会出现任何问题。 如果我把“x++”放在If括号外,经过几次运行后,我发现有时它会创建一个相同的随机数,并在numbers数组中找到。然后它跳过,div变为空

在if块中递增x和在if块外递增x之间有什么区别

在if块内:

var numbers = []
var luckyNumber;
var x = 1;

while (x <= 8) {
  luckyNumber = Math.floor(Math.random() * 80 + 1);
  if (numbers.indexOf(luckyNumber) == -1) {
    document.getElementById('k' + x).innerHTML = luckyNumber;
    numbers.push(luckyNumber);
    x++;
  }
}
var numbers = []
var luckyNumber;
var x = 1;

while (x <= 8) {
  luckyNumber = Math.floor(Math.random() * 80 + 1);
  if (numbers.indexOf(luckyNumber) == -1) {
    document.getElementById('k' + x).innerHTML = luckyNumber;
    numbers.push(luckyNumber);
  }
  x++;
}
var number=[]
var-luckyNumber;
var x=1;
而(x
  • 因为在第一个示例中,只有在生成了唯一的随机数的情况下,才能前进
    x
  • 在第二个示例中,无论生成的数字是否唯一,您都会前进
    x
    。因此,在这种情况下,可能会发生这种情况,即在它尝试的8次中(因为这是您的
    while
    条件),它只生成了两个唯一的随机数,例如

当您将增量放在if条件之外时,如果
数字
数组中已经存在一个数字,那么它将不会进入if条件,因此div永远不会填充。但是,由于您增加了
x
值,因此您将进入下一个div。如果您将
x
增量放在外部,则e
x
值在
中的条件未满足时保持不变,因此在下一次迭代中,该条件可能通过或继续尝试

执行流程

当你有增量的时候,如果

1) Generate random number.
2) Check in is already generated, if yes skip it. // you see ? when skip no increment happens, because the increment inside the the condition.
3) Generate again and go to step 2.
当你有增量的时候,如果

1) Generate random number.
2) Check in is already generated, if yes skip it. Increase x value to next. //** you see ? incrementing no matter you skip it or not.
3) Generate again and go to step 2.

如果将x++写在外部,如果它总是增加1。,如果将它放在内部,那么当满足条件时,它显然会增加。,根据这一点,您的输出可能会有所不同。

在外部递增,if块将在没有任何条件的情况下执行


但是您在内部递增,如果块将仅在该条件为真时执行。

如果已经取了数字,您可以使用
do while
循环进行检查

var number=[],
幸运数字,
x=1;

虽然(x)它是否继续创建随机数并检查它是否已经在数字数组中?我认为if语句在while循环的每次迭代中运行一次。因此它不会递增,直到条件为true并继续尝试。对吗?@user7580495是的。否则,如果它一旦在数组中生成并找到,则需要再次生成并执行ch埃克,不是吗?现在正在发生。
1) Generate random number.
2) Check in is already generated, if yes skip it. Increase x value to next. //** you see ? incrementing no matter you skip it or not.
3) Generate again and go to step 2.