Урок 5 из 25
В прогрессе

5) Циклы

Циклы

Циклы позволяют в зависимости от определенных условий выполнять некоторое действие множество раз. В JavaScript имеются следующие виды циклов:

  • for

  • for..in

  • for..of

  • while

  • do..while

Циклы

				
					for ([инициализация счетчика]; [условие]; [изменение счетчика]){
 
    // действия
}
				
			

Например, используем цикл for для перебора чисел от 0 до 4:

				
					for(let i = 0; i<5; i++){
     
    console.log(i);
}
console.log("Конец работы");
				
			

Первая часть объявления цикла — let i = 0 — создает и инициализирует счетчик — переменную i. И перед выполнением цикла ее значение будет равно 0. По сути это то же самое, что и объявление переменной.

Вторая часть — условие, при котором будет выполняться цикл: i<5. В данном случае цикл будет выполняться, пока значение i не достигнет 5.

Третья часть — i++ — приращение счетчика на единицу.

То есть при запуске переменная i равна 0. Это значение отвечает условию i<5, поэтому будет выполняться блок цикла, а именно строка кода

				
					console.log(i);
				
			

Каждое отдельное повторение цикла называется итерацией. Таким образом, в данном случае сработают 5 итераций.

Счетчик удобно использовать как индекс элементов массива и таким образом перебирать массив:

				
					const people = ["Tom", "Sam", "Bob"];
for(let i=0; i < 3; i++){
      
     console.log(people[i]);
}
				
			

Цикл while

Цикл while выполняется до тех пор, пока некоторое условие истинно. Его формальное определение:

				
					while(условие){
     
    // действия
}


let i = 1;
while(i <=5){
     
    console.log(i);
    i++;
}
				
			

do..while

В цикле do сначала выполняется код цикла, а потом происходит проверка условия в инструкции while. И пока это условие истинно, цикл повторяется. Например:

				
					let i = 1;
do{
    console.log(i);
    i++;
}while(i <= 5)
				
			

Операторы continue и break

Иногда бывает необходимо выйти из цикла до его завершения. В этом случае мы можем воспользоваться оператором break:

				
					for(let i=1; i <= 6; i++){
      
     if(i===4) break;
     console.log(i);
}
console.log("Конец работы");
				
			

Данный цикл увеличивает переменную i c 1 до 6 включая, то есть согласно условию цикла блок цикла должен выполняться 6 раз, то есть поизвести 6 итераций. Однако поскольку в блоке цикла происходит поверка if(i===4) break;, то, когда значение переменной i достигнет 4, то данное условие прервет выполнение цикла с помощью оператора break. И цикл заершит работу.

 

Если нам надо просто пропустить итерацию, но не выходить из цикла, мы можем применять оператор continue. Например, изменим предыдущий пример, только вместо break используем оператор continue:

				
					for(let i=1; i <= 6; i++){
      
    if(i===4) continue;
    console.log(i);
}
				
			

Цикл for...of

Цикл for…of предназначен для перебора наборов данных. Например, строка представляет фактически набор символов. И мы можем перебрать ее с помощью данного цикла:

				
					const text = "Hello";
for(char of text){
      
     console.log(char);
}
				
			

for..in

Цикл for..in предназначен главным образом для перебора объектов. Его формальное определение:

				
					for (свойство in объект) {
    // действия
}
				
			

Этот цикл перебирает все свойства объекта. Например:

 
				
					const person = {name: "Tom", age: 37};
for(prop in person){
      
    console.log(prop);
}
				
			

Домашняя работа

Вывести числа от 1 до 10: Напиши цикл, который выводит в консоль числа от 1 до 10.

Вывести только чётные числа от 1 до 20: Используя цикл, выведи в консоль все чётные числа от 1 до 20.

 

Обратный отсчёт от 10 до 1: Напиши цикл, который выводит числа от 10 до 1 в обратном порядке.