2012-04-24 2 views

ответ

13

Цикл будет просто повторяют до тех пор, как i меньше length. Он просто предполагает, что i уже объявлен в другом месте.

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

​for(;;) window.alert('Are you sick of alerts yet?');​​​​​​​​​ 
+0

+1 для 'for (;;)', который возвращает воспоминания, прежде чем я понял, что 'while (true)' был более разборчивым (по какой-то причине я был введен в 'for (;;)' как канонический способ создания бесконечного цикла) ... – Cameron

+0

Да, JavaScript - это уникальный язык в том, что эти виды хакерских ярлыков несколько поощряются * просто для сохранения байтов по проводу. В противном случае 'while (true)', безусловно, легче читать. Кастинг с '!!' или '~~' тоже забавный. –

+0

Hah, но я на самом деле учил C++ в то время (первый язык программирования), а не JavaScript! ;-) – Cameron

9

Это обычный for цикл, который ничего не делает вообще на стадии инициализации.

Это эквивалентно записи:

; 
while (i < length) { 
    // ... 
    i++; 
} 

за исключением, если есть в ... кузове continue, в этом случае петля for будет выполнять в i++ перед повторной оценки состояния, и цикл while не будет ,

+0

Так почему бы вам предпочесть писать это по простому циклу 'while'? –

+0

@ nl-x: Хорошая точка. Он более компактный, хотя и немного менее читаемый; однако, если * намерение * должно иметь нормальный цикл 'for', и просто не требуется никакого шага инициализации, тогда я не вижу ничего плохого в использовании этой формы. Реальная разница возникает, если в теле цикла есть 'continue' - форма' for' увеличивается, но форма 'while' не работает. Я отредактировал свой ответ, чтобы отразить это, спасибо. – Cameron

+0

Извините, я не смотрел четко. Я думал, что часть 'i ++' также была опущена, например 'for (; i

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