PassFront
  1. PassFront
  2. База знаний
  3. Массивы и структуры данных

В чем разница между методом массива forEach и циклом for?

Массивы и структуры данных

`forEach` — метод массива для перебора с колбэком, а `for` — базовый цикл. Различаются гибкостью управления (break/continue, async) и удобством.

forEach

Вызывает колбэк для каждого элемента; возвращает undefined.

[1, 2, 3].forEach((value, index) => console.log(index, value));
  • Читаемо, не нужен счётчик.
  • Нельзя прервать (break/continue не работают).
  • Игнорирует await (не ждёт асинхронные операции внутри).
  • Пропускает «дырки» в разреженных массивах.

Цикл for

for (let i = 0; i < arr.length; i++) {
  if (arr[i] === target) break; // можно прервать
}
  • Полный контроль: break, continue, шаг, обратный порядок.
  • Работает с await (последовательное ожидание).
  • Чуть быстрее на больших объёмах (микрооптимизация).

Различия

  • Прерывание: for — да; forEach — нет.
  • async/await: for/for...of — да; forEach — не ждёт.
  • Читаемость: forEach короче для простого перебора.
  • Индекс: в обоих доступен.

Как выбирать

  • Простой перебор без прерывания → forEach (или for...of).
  • Нужен break/continue или await внутри → for / for...of.

Коротко для собеседования

forEach — краткий перебор с колбэком, но нельзя прервать и не ждёт await. for (и for...of) — полный контроль: break/continue, работа с await, чуть быстрее. Для простого перебора — forEach, для прерывания/асинхронности — for/for...of.

Другие вопросы раздела