我做的while循环卡在无限循环中

时间:2015-10-11 12:41:18

标签: javascript loops do-while

我正在学习JavaScript。 我刚刚学会了while while循环并尝试做一些例子。

这是我制作的代码...

for (i=0; i<5; i++) {
    console.log ("for loops " + i);
}
do {
    console.log ("do once");
} while (i<8) {
    console.log ("while loops " + i);
    i++;
}

我期待如下结果。

for loops 0
for loops 1
for loops 2
for loops 3
for loops 4
do once
while loops 5
while loops 6
while loops 7

但不幸的是,我的浏览器进入了无限循环。 我不知道为什么这个循环是无限的。请帮我。

5 个答案:

答案 0 :(得分:1)

for (i=0; i<5; i++) {
    console.log ("for loops " + i);
}

do {
    console.log ("do once");
} while (i<8) 

{
    console.log ("while loops " + i);
    i++;
}

也许这样你可以看到原因

&#34;问题&#34; 是解释器会将while视为do

的一部分

答案 1 :(得分:1)

有效地你写了:

i

变量do { console.log ("do once"); i++; } while (i<8); 永远不会递增并导致无限循环(因为该值始终小于8)。

要解决此问题,您可以在循环中增加变量。

do while

http://jsfiddle.net/uby3nfoy/1/

您可能会在两种不同类型的循环之间产生混淆。 while和{{1}}。

答案 2 :(得分:1)

&#34; do / while循环是while循环的变体。这个循环将执行代码块一次,然后检查条件是否为真,然后只要条件为真,它就会重复循环。&#34;

当代码到达Do / While循环时,

i = 5。所以代码将重复&#34; console.log(&#34;做一次&#34;);&#34;直到i大于8.结果,它进入无限循环。

答案 3 :(得分:0)

您需要确保循环内的增量。见这个例子。

for (i=0; i<5; i++) {
console.log ("for loops " + i);
}
console.log ("do once");
do {
console.log ("while loops " + i);
i++;
} while (i<8);

您正在尝试增加一些永远不会执行的代码。你似乎把do ... while()循环与while()循环混淆了。

do ... while()将在检查while子句之前执行一次,而while()将在循环之前检查该子句。它们略有不同。

答案 4 :(得分:0)

在JavaScript中,do-while循环具有以下语法:

do{
  commands();
} while (logical statement);

所以你写道:

do {
  console.log ("do once");
  // missing increment
} while (i<8);

{ // these { } are not part of any loop, but just a scope block
  console.log ("while loops " + i);
  i++;
}

浏览器陷入无限循环,因为变量i没有在while循环内增加。你应该尝试以下方法:

for (i=0; i<5; i++) {
  console.log ("for loops " + i);
}

console.log ("do once");
do {
  console.log ("while loops " + i);
  i++;
} while (i<8);

希望有所帮助

相关问题