while循环中的Javascript if语句

标签 javascript if-statement while-loop increment

下面是创建 1 到 80 之间的随机 8 个数字的代码。它将随机数放入 numbers 数组并写入 div。如果代码递增 if 括号内的 x,则代码运行没有任何问题。 如果我将 'x++' 放在 if 括号之外,经过几次运行后我发现有时它会创建一个相同的随机数并在数字数组中找到。然后它跳过,那个 div 变空了。

在 if block 中递增 x 和在 if block 外递增 x 有什么区别?

在 if block 内:

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++;
  }
}

在 if block 之外:

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++;
}

HTML:

<div id="k1">K1</div>
<div id="k2">K2</div>
<div id="k3">K3</div>
<div id="k4">K4</div>
<div id="k5">K5</div>
<div id="k6">K6</div>
<div id="k7">K7</div>
<div id="k8">K8</div>

最佳答案

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

执行流程

如果里面有increment

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.

关于while循环中的Javascript if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42338459/

相关文章:

javascript - 滚动 HTML 页面时如何滚动横幅

c# - 如何从(c#)windows应用程序填充html文本框

javascript - Jquery Validate 允许提交但不满足规则

javascript - 如何使用 MOBAC 通过 OpenLayers 创建的 map 集作为离线 map ?

ios - 如何在快速注册时检查用户是否已经注册

batch-file - 如何确保批处理变量必须等于某些值?

java - 尝试使用 Integer.parseInt() 将字符串转换为整数时出错

c++ - 使用 while/do-while 循环进行数组元素设置

c - 为什么“while(!feof(file))”总是错误的?

vb.net - VB.NET 中 do while 和 while 有什么区别?