【问题标题】:Why does this javaScript code create an infinite loop为什么这个javascript代码会创建一个无限循环
【发布时间】:2020-06-08 19:29:26
【问题描述】:
let i = 500;
do {
    if (isPrime(i) === false) {
        continue;
    } else {
        para.textContent += i + ', ';
    }
    i--;
} while (i >= 2);

如果我将 (i--) 移到循环的开头,效果会很好。

【问题讨论】:

  • 因为isPrime(500) 是假的。 PS无需测试x === false,直接使用!x即可。

标签: javascript infinite-loop


【解决方案1】:

你的循环不断迭代 -

if (isPrime(i) === false) {  //this condition will be true and code keeps looping because you never increment i
    continue;
}

但是,在您开头声明i-- 的代码中,i 无论如何都会不断减少。所以第一个程序会按预期成功运行,而在第二个程序中,执行永远不会超出第一个if() 条件。

【讨论】:

    【解决方案2】:

    初始 i=500 ,进入循环

    if (isPrime(i) === false) {
            continue;
        }
    

    这个条件满足,进入下一次迭代i值永远是500

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 2021-05-14
      • 2018-05-03
      • 2020-07-12
      • 1970-01-01
      • 2018-02-22
      • 2013-07-25
      相关资源
      最近更新 更多