2015-10-11 5 views
1

Я изучаю JavaScript. Я только что научился делать цикл while и попытался сделать пример.my do while loop застрял в бесконечном цикле

это код, что я сделал ...

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 

но, к сожалению, мой браузер отправился в бесконечный цикл. Я не знаю, почему этот цикл бесконечен. Пожалуйста, помогите мне.

ответ

0

В JavaScript, цикл Do-то время имеет следующий синтаксис:

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++; 
} 

браузер застревает в бесконечном цикле, так как переменный я не инкрементируюсь внутри цикла 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); 

надежду, что помогает

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++; 
} 

Может быть, таким образом, вы можете увидеть причину

«Проблема» в том, что интерпретатор будет видеть while как часть do

+0

И вот почему все любят JavaScript ASI –

1

Эффективно вы писали:

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

Переменная i никогда не увеличивается и имеет использовал бесконечный цикл (так как значение всегда меньше 8).

Чтобы исправить это, вы можете увеличить эту переменную в цикле.

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

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

Ваше замешательство может быть между двумя разного типа петель. do while и while.

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().

A do ... while() будет выполняться один раз, прежде чем он проверяет предложение while, и while() проверит предложение перед его циклом. Они немного отличаются.

1

«Д.О./времени цикла является вариантом цикла в то время как этот цикл будет выполнять блок кода один раз, перед проверкой, если условие истинно , то он будет повторять цикл, пока условие истинно."

i = 5, когда код достигает цикла Do/While. Таким образом, код будет повторять« console.log («делать один раз»); »до тех пор, пока i не станет больше 8. В результате он переходит в бесконечный цикл.