Какие знаешь циклы в JS

Ответ

В JavaScript есть несколько типов циклов:

  1. for - классический цикл с условием, инициализацией и инкрементом:
for (let i = 0; i < 5; i++) {
  console.log(i);
}
  1. while - выполняется, пока условие истинно:
let i = 0;
while (i < 5) {
  console.log(i);
  i++;
}
  1. do...while - сначала выполняет тело, затем проверяет условие:
let i = 0;
do {
  console.log(i);
  i++;
} while (i < 5);
  1. for...in - для перебора свойств объекта:
const obj = {a: 1, b: 2};
for (let key in obj) {
  console.log(key, obj[key]);
}
  1. for...of - для перебора итерируемых объектов (массивы, строки и т.д.):
const arr = [1, 2, 3];
for (let value of arr) {
  console.log(value);
}

Также есть методы массивов (forEach, map, filter и др.), которые могут заменять циклы в некоторых случаях.

Ответ 18+ 🔞

Да ты посмотри, какие у нас в JavaScript закручены спирали для повторения действий! Прямо как в жизни — можно по-разному наступать на одни и те же грабли.

Вот, например, старый добрый for. Классика жанра, как говаривал мой дед. Заводишь счётчик, ставишь условие и поехали крутиться, пока не надоест.

for (let i = 0; i < 5; i++) {
  console.log(i); // Выведет 0, 1, 2, 3, 4
}

Дальше — while. Это когда ты такой: "Буду делать, пока не станет плохо". Главное — не забыть внутри что-то менять, а то зациклишься нахуй, и комп загнётся.

let i = 0;
while (i < 5) {
  console.log(i); // Тот же результат
  i++; // А вот это — святое! Без этого — пиздец.
}

А есть ещё do...while — хитрая жопа. Сначала сделает, а потом спросит: "А можно было?". Гарантированно один раз вломит, даже если условие изначально ложное.

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

Теперь про перебор. Хочешь потрогать все ключи у объекта? Вот тебе for...in. Бери да разглядывай, что там внутри.

const obj = {a: 1, b: 2};
for (let key in obj) {
  console.log(key, obj[key]); // 'a' 1, потом 'b' 2
}

А если у тебя массив или строка — что-то, где значения идут одно за другим — тогда for...of. Он не ключи даёт, а сразу значения, удобно, блядь.

const arr = [1, 2, 3];
for (let value of arr) {
  console.log(value); // 1, 2, 3
}

И не забывай, что есть ещё куча умных методов у массивов — forEach, map, filter. Это такие циклы в пиджаке и галстуке. Выглядят солидно, и часто код с ними читать приятнее, чем этот вот классический разгон с let i = 0. Но это уже, как говорится, на любителя и по ситуации.