В то время как Loops vs. For Loops в JavaScript?

Каковы преимущества использования while цикл больше for цикла? Когда я перебираю массивы, я всегда использую цикл for поэтому мне было интересно, что-то здесь не хватает.

У меня никогда не было ситуации, когда цикл for не справлялся с работой, но я беспокоюсь, что у меня могут возникнуть вредные привычки. Я использовал циклы в отношении элементов на веб-страницах, анимации и т.д.

Ответ 1

Вот причины, по которым я бы выбрал один из них:

Синтаксис для цикла:

for( int i = 0; i > 10; i++)
{
    //Some code here
}

Я бы использовал цикл for по той причине, что я могу ЗНАТЬ ЧИСЛО ИТЕРАЦИЙ, которые мне нужно сделать, и у меня есть переменная INCREMENTING, которая иногда может быть удобной.

Синтаксис while-loop:

while(!done)
{
    //Some code goes here
}

Я бы использовал этот цикл, когда я НЕ УВЕРЕН, сколько Итераций мне нужно будет выполнить. Примеры: Ожидание ввода пользователем правильных входных значений и непрерывного цикла, пока он/она не введет правильное значение.

Синтаксис Do-While:

do
{
    //Some code here
}
while(!done);

Этот цикл почти такой же, как в цикле while, но я бы предпочел это, когда мне нужно что-то сделать ATLEAST ONCE, прежде чем я начну проверять, что бы это ни было, заставило бы меня хотеть сделать цикл и снова сделать этот код. Пример: сначала спросите пользователя о вводе и затем подтвердите его. Если неверный ввод задан, то заходите назад и снова запросите ввод

Ответ 2

Функционально, можно заменить другое во всех условиях. Лучше другого? Не в javascript (который вы отметили) как его не скомпилированный язык.

Но в таких языках, как С++, цикл for обычно дает компилятору статическое количество циклов, которое компилятор может использовать для оптимизации двоичного файла. Поэтому он должен работать быстрее (при очень большом числе циклов).

Это не должно быть проблемой в сегодняшнем возрасте, когда вы даже не заметите увеличения производительности в цикле, работающем на 10000 итераций, на четырехъядерном процессоре емкостью 2,5 ГГц.

Однако, лично, эстетика имеет значение для меня (и это должно быть для вас, если вы серьезно относитесь к искусству кодирования). Например, когда вы имеете дело с внешним условием (переменная, которую вы проверяете, определяется вне цикла), переходите к циклу while. Его просто семантически так красиво. Также while цикл должен быть де-факто выбором для бесконечного цикла (я не вижу причины, почему у вас будет бесконечный цикл в javascript, хотя).

Вкратце, следуйте синтаксису. Вы просто проверяете состояние? Пойдите с петлей while. Вы инициализируете и увеличиваете/уменьшаете что-то в контексте цикла вместе с проверкой состояния? Только тогда перейдите в цикл for.

Ответ 3

Вы всегда можете использовать или циклы. Но наиболее частое использование циклов for - это когда число итераций известно, а цикл while имеет неопределенное количество итераций или будет зависеть от особое условие. Например:

var arr = ["a", "b", "c"];
for (let i=0; i<arr.length; i++) { // will loop 3 times (length of arr = 3)
    // do something
}

var x = "Hello";
while (x != "World") {
    // do something
    if (some_condition) {
        // do something
    }
    else x = "World";
}