为什么这个 javaScript 代码会创建一个无限循环
Why does this javaScript code create an infinite loop
let i = 500;
do {
if (isPrime(i) === false) {
continue;
} else {
para.textContent += i + ', ';
}
i--;
} while (i >= 2);
如果我将 (i--) 移动到循环的开头,效果很好。
初始i=500,进入循环
if (isPrime(i) === false) {
continue;
}
这个条件满足,进入下一次迭代i值永远为500
您的循环在 -
处不断迭代
if (isPrime(i) === false) { //this condition will be true and code keeps looping because you never increment i
continue;
}
但是,在您开头声明 i--
的代码中,无论如何 i
都会不断减少。所以第一个会运行如预期的那样成功,而在第二个程序中,执行永远不会超出第一个if()
条件。
let i = 500;
do {
if (isPrime(i) === false) {
continue;
} else {
para.textContent += i + ', ';
}
i--;
} while (i >= 2);
如果我将 (i--) 移动到循环的开头,效果很好。
初始i=500,进入循环
if (isPrime(i) === false) {
continue;
}
这个条件满足,进入下一次迭代i值永远为500
您的循环在 -
处不断迭代if (isPrime(i) === false) { //this condition will be true and code keeps looping because you never increment i
continue;
}
但是,在您开头声明 i--
的代码中,无论如何 i
都会不断减少。所以第一个会运行如预期的那样成功,而在第二个程序中,执行永远不会超出第一个if()
条件。