Одна из самых сложных вещей, с которыми вы когда-либо сталкивались при изучении javascript, — это циклы. Некоторые могут сказать, что циклы — это просто, но у меня было много проблем при изучении циклов в JavaScript, и я знаю, что у многих из вас они все еще могут быть.

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

для циклов

Цикл for — один из основных циклов, с которыми вы столкнетесь. Чего вы еще долго не будете знать, так это того, что в JavaScript существует три типа циклов for. Я собираюсь показать вам все это.

const num = 5

for(let i = 0 ; i < num ; i++) {
    console.log(i)
}

// 0 1 2 3 4

Это основной формат цикла for. Теперь позвольте мне дать вам более простой способ понять это:

for( initialization, condition, increment/decrement )

Я думаю, что приведенный выше фрагмент кода облегчает понимание. Во-первых, у нас есть ‘let i = 0’, это наша часть инициализации, проще говоря, откуда начнется цикл. тогда у нас есть «i ‹ num», которое является нашим условием завершения цикла. Пока это условие выполняется, циклы будут продолжаться. Затем у нас есть третья и последняя часть цикла, которая является увеличением или уменьшением.

Видите ли, циклы используются, чтобы делать что-то снова и снова, пока не будет выполнено определенное условие. например, вы можете распечатать таблицу из 4. Давайте напишем для этого кусок кода.

const num = 4

for( let i = 1; i <= 10; i++) {
    console.log(`${num} x ${i} = ${num * i}`)
}

/**

4 x 1 = 4
4 x 2 = 8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36
4 x 10 = 40

**/

Теперь в этом фрагменте кода я использую простой цикл for для печати таблицы из 4. Для написания таблицы вам нужно всего лишь выполнить одну и ту же задачу 10 раз. предполагая, что вы начинаете с 1, а не с 0. Таким образом, условия инициализации и завершения изменены по сравнению с предыдущим фрагментом кода.

Теперь эта петля хороша и все. Вы можете использовать его в массивах и объектах и ​​еще много чего. Предполагая, что вы знаете, как я перейду к следующему циклу. Что такое цикл for-in.

цикл for-in

При программировании вы не обязательно используете циклы до числа, вы в основном используете их для циклического перебора всего массива или объекта. В JavaScript у нас есть нечто, называемое циклом for-in. Посмотрим, как это работает.

const arr = [ 2, 3, 5, 7, 11, 13, 17, 19]

for(let index in arr) {
    console.log(index)
}

// 0 1 2 3 4 5 6 7 

Здесь у нас есть цикл for-in, используемый для массива простых чисел меньше 20. Вы можете видеть, что цикл for-in учитывает все, что вы объявляете индексом в случае массивов. Те из вас, кто немного знает Python, возможно, уже использовали циклы for-in. там он в основном используется с функцией диапазона. давайте теперь посмотрим, что мы получим в случае Объектов.

let obj = {
    Name: 'Gaurav',
    Religion: 'Hindu',
    Nationality: 'Indian',
    Age: '24',
    proffession: 'Software engineer',
    Hobby: ['Blogging', 'Reading', 'Technology']
}

 for(let index in obj) {
    console.log(index)
}

/**

Name
Religion
Nationality
Age
proffession
Hobby

**/


/**
You can get values of an object by using obj[index] 
**/

В случае с объектами мы получаем ключи вместо индексов. Обычно говорят, что если вы имеете дело с объектами, используйте цикл for-in, в случае массивов используйте цикл for-of, который является следующим.

цикл for-of

как и циклы for-in, у нас также есть циклы for-of в JavaScript. Но, в отличие от циклов for-in, их нельзя использовать в случае объектов. если вы попытаетесь использовать их на объектах, они выдадут вам сообщение об ошибке, говорящее, что «объекты не являются итерируемыми». Но они отлично работают в случаях с массивом. Посмотрим, как это пойдет.

const arr = [ 2, 3, 5, 7, 11, 13, 17, 19]

for(let element of arr) {
    console.log(element)
}

// 2 3 5 7 11 13 17 19

Как вы можете видеть результат из предыдущего примера при использовании вместо полностью изменений. В этом случае то, что мы получаем, эквивалентно «arr[index]», мы называем его элементом массива или можем сказать, что:

результат цикла for-of == array[независимо от результата цикла for-in]

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

Примечание. Вы можете объявить циклы for-in и for-of с константой, но вы не можете сделать это в простом цикле for.

Пока циклы

Хотя циклы — это то, что можно назвать адом для программистов. хотя концепция почти такая же, как и для цикла. Они просто немного сложны. Хотите верьте, хотите нет, но программисты делают много ошибок при работе с циклами while.

//your initialization goes here
while ( you terminating condition goes here ) {
     // whatever you want to do goes here;
  
   //you increment or decrement goes here
}

Теперь давайте напишем таблицу из 18 с циклом while.

let i = 1, num = 18
while( i <= 10) {
   console.log(`${num} x ${i} = ${num * i}`)
    i++
}

/**
18 x 1 = 18
18 x 2 = 36
18 x 3 = 54
18 x 4 = 72
18 x 5 = 90
18 x 6 = 108
18 x 7 = 126
18 x 8 = 144
18 x 9 = 162
18 x 10 = 180
**/

Теперь давайте попробуем сделать несколько ошибок в циклах while и посмотрим, что получится. давайте переместим инкрементную часть перед консолью.

let i = 1, num = 18
while( i <= 10) {
    i++;
   console.log(`${num} x ${i} = ${num * i}`);
    
}

/**
18 x 2 = 36
18 x 3 = 54
18 x 4 = 72
18 x 5 = 90
18 x 6 = 108
18 x 7 = 126
18 x 8 = 144
18 x 9 = 162
18 x 10 = 180
18 x 11 = 198
**/

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

Это происходит, когда ваше условие и инкремент/декремент реализованы неправильно.

рассмотрим сценарий:

let num = 10;
while( num > 8 ) {
    console.log("Keep printing this to console")
    num++;
}

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

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

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

Выполнить цикл

Цикл do-while используется редко, но он есть. Давайте попробуем увидеть, чем он отличается от простого цикла while.

let num = 5

do {
    num++
} while ( num <= 10)

console.log(num)

// 11

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

Примечание. Я никогда не использовал цикл do-while.