JS新手。我正在尝试将for循环更改为while循环。它打印一个数字的因数,但是由于某些原因,while循环导致网页停止响应。任何帮助都是非常感谢的。
var num, i = 1,
array = [];
num = parseInt(prompt("Please enter a number:"));
while (i < num) {
if (num % i == 0) {
array.push(i);
i++;
}
}
alert("The factors of " + num + " are: " + array + " and " + num);
发布于 2017-03-06 02:32:35
将i变量的增量移到if条件之外。Else -当num不能被指定的i整除时,while循环将被卡住。
例如,如果num为5,i为2,由于if条件未满足,循环将停滞-这就是i不会递增的原因-然后我们将经历无限循环。
var num, i = 1, array = [];
num = parseInt(prompt("Please enter a number:"));
while (i < num) {
if (num % i == 0) {
array.push(i);
}
i++;
}
alert("The factors of " + num + " are: " + array + " and " + num);
发布于 2017-03-06 02:36:47
仅当" if“块的条件为真时,才会递增i。如果该条件的计算结果为false,则i不能递增,因此循环永远不会结束。
if (num % i == 0) { // <some value except 0> % 1 == 0 -> false
array.push(i);
i++;
}所以试试吧:
while (i < num) {
if (num % i == 0) {
array.push(i);
}
i++; // now i can be incremented regardless of the condition in the "if" block.
}https://stackoverflow.com/questions/42612278
复制相似问题