2014-01-16 3 views
1

Я определенно новичок, когда дело доходит до JavaScript. Я искал вокруг stackoverflow и веб для объяснения, почему этот цикл JavaScript для цикла не работает бесконечно, но я еще не нашел четкого ответа. В настоящее время я использую этот цикл, цикл, который я заимствовал и модифицировал на своем веб-сайте, и он работает по назначению; Тем не менее, я хотел бы знать, почему он не зацикливается бесконечно. У меня создалось впечатление, что первый оператор цикла for определяет переменную цикла, второй устанавливает условие цикла (которое предотвращает бесконечный цикл), а третий изменяет переменную цикла после выполнения кода кода. Почему этот цикл не зацикливается бесконечно, если ему не хватает оператора цикла?Что предотвращает этот цикл JavaScript для петли бесконечно?

function showAll() { 
    var aBoxes = document.querySelectorAll('.aBox'); 
    for (var i = a.Boxes.length; i--;) { 
     aBoxes[i].style.display = 'block'; 
    } 
} 

ответ

4

Когда переменная «я», наконец, уменьшается до 0, значение i-- будет «falsy» и цикл завершается. В цикле нет выражения условия; это то, что i-- есть.

+0

@VisioN idgi ?? – Pointy

+0

Потребовалось 45 секунд, чтобы открыть вопрос, прочитать его полностью и опубликовать ответ ... – VisioN

+2

@VisioN ах ... ну было довольно ясно, что он просил :) В последнем предложении все сказано на самом деле. – Pointy

0

Пока i--; не 0, он будет оценен как true, поэтому цикл продолжится. Когда он достигнет 0, который оценивается как false, он остановится

0

Потому что ему не хватает инструкции условия цикла. Ему не хватает модифицирующего утверждения. Один недостаток второе условие будет выглядеть следующим образом:

for (var i = a.Boxes.length; ; i--) 

Что ваш цикл это делает, декремента i всякий раз, когда пришло время, чтобы проверить условие цикла заявление, а затем проверить, чтобы увидеть, если полученное значение является истинным или ложным (т.е. ненулевой или нулевой). Когда i становится достаточно маленьким (i==0), это закончит цикл.

0

В цикле отсутствует выражение условия; в нем отсутствует выражение, которое встречается в конце каждой итерации цикла (третье выражение). Однако i уменьшен как побочный эффект выражения условия, поэтому окончательное выражение не требуется.

Выражение условия оценивается как false как только i достигает 0, и поэтому цикл завершается.

В целом, каждое из выражений в операторе for является необязательным. Совершенно нормально опускать любой или все из них.

Смежные вопросы