首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将for循环改为while循环崩溃javascript网页?

问将for循环改为while循环崩溃javascript网页?
EN

Stack Overflow用户
提问于 2017-03-06 02:30:43
回答 2查看 47关注 0票数 1

JS新手。我正在尝试将for循环更改为while循环。它打印一个数字的因数,但是由于某些原因,while循环导致网页停止响应。任何帮助都是非常感谢的。

​

代码语言:javascript
复制
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);

​

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-06 02:32:35

将i变量的增量移到if条件之外。Else -当num不能被指定的i整除时,while循环将被卡住。

例如,如果num为5,i为2,由于if条件未满足,循环将停滞-这就是i不会递增的原因-然后我们将经历无限循环。

​

代码语言:javascript
复制
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);

​

票数 4
EN

Stack Overflow用户

发布于 2017-03-06 02:36:47

仅当" if“块的条件为真时,才会递增i。如果该条件的计算结果为false,则i不能递增,因此循环永远不会结束。

代码语言:javascript
复制
if (num % i == 0) {  // <some value except 0> % 1 == 0 -> false
    array.push(i);
    i++;
}

所以试试吧:

代码语言:javascript
复制
while (i < num) {
    if (num % i == 0) {
        array.push(i);
    }
    i++; // now i can be incremented regardless of the condition in the "if" block.
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42612278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档