首页 > 解决方案 > 为什么这个javascript代码会创建一个无限循环

问题描述

let i = 500;
do {
    if (isPrime(i) === false) {
        continue;
    } else {
        para.textContent += i + ', ';
    }
    i--;
} while (i >= 2);

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

标签: javascriptinfinite-loop

解决方案


您的循环不断迭代 -

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

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


推荐阅读