gpt4 book ai didi

javascript - (JavaScript) 为什么 while 循环中 'if' 内的 continue 语句会使浏览器崩溃?

转载 作者:行者123 更新时间:2023-12-03 20:01:00 25 4
gpt4 key购买 nike

我想用 JavaScript 编写一个程序来打印除 5 和 10 之外的从 1 到 20 的所有数字。当我使用这样的 for 循环时:

for (x = 1; x <= 20; x++) {
if (x == 5 || x == 10) {
continue;
}
document.write(x + ' ');
}
它工作正常并打印 1 2 3 4 6 7 8 9 11 12 13 14 15 16 17 18 19 20 .
但是,当我尝试使用这样的 while 循环时:
var x = 1;

while (x <= 20) {
if (x == 5 || x == 10) {
continue;
}
document.write(x + ' ');
x++;
}
它使网页无响应,我收到提示,要求我关闭它。这里有什么问题?

最佳答案

问题如下,在 for 循环中 continue 将跳回更新表达式 x++ 但在 while 循环中它将跳回运行条件 while(x <= 20)
引用 mdn docs .

In a while loop, it jumps back to the condition. In a for loop, itjumps to the update expression.


因为您没有更新条件内的计数器
while (x <= 20) {
if (x == 5 || x == 10) {
continue;
}
x 将保持 5 并且永远不会更新,因为在 while 循环中继续它会跳回运行状态。这将以 结束。无限循环 .
要解决它,您可以在 while 循环内的 continue 语句之前增加计数器
while (x <= 20) {
if (x == 5 || x == 10) {
x++
continue;

// for (x = 1; x <= 20; x++) {
// if (x == 5 || x == 10) {
// continue;
// }
// document.write(x + ' ');
//}


var x = 1;

while (x <= 20) {
if (x == 5 || x == 10) {
x++
continue;

}
document.write(x + ' ');
x++;
}

关于javascript - (JavaScript) 为什么 while 循环中 'if' 内的 continue 语句会使浏览器崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66204337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com