while循环中的Javascript if语句

原文 标签 javascript if-statement while-loop increment

您可以在下面找到创建 1 到 80 之间随机 8 数的代码。它将随机数放入 numbers 数组并写入 div。如果在括号中增加 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++;
  }
}

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

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 永远不会填满。然而,你继续下一个 div,因为你增加了 x值(value)。如果你把 x增量外,x当条件在 if 内时,值保持不变不满足,因此在下一次迭代中,条件可能会通过或继续尝试。

执行流程

当你在里面有增量时

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 - 如何重新创建Google Zeitgeist 2013中所示的图片库动画?

javascript - 动态创建鼠标光标?

if-statement - 分离 G1 ; G2 vs. If-then-else Cond -> G1 ; G2

java - 循环与运算

javascript - Strophe和Phonegap

javascript - 从客户端发出instagram API请求是否安全?

javascript - 如何使用if来显示文本

java - Java-确保集合中的项目只能使用一次

java - 仅使用while循环创建圣诞树

python - 在while循环之外访问变量,Python