Выбор ответа Junior Объекты и массивы обновлено

return внутри forEach

Вопрос

Что выведет код?

[1, 2, 3].forEach((n) => {
  if (n === 2) return;
  console.log(n);
});

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 1 и 3. return выходит только из текущего вызова колбэка, а forEach продолжает вызывать его для следующих элементов.

Варианты ответа

  1. 1 и 3правильный ответ
  2. Только 1
  3. 1, 2 и 3
  4. SyntaxError: return вне функции

Разбор

return выходит только из текущего вызова колбэка, а forEach продолжает вызывать его для следующих элементов. Поэтому пропускается только 2. Прервать forEach нельзя (кроме как бросить исключение). Если нужна остановка, используют for...of с break, либо some/find, которые прекращают обход сами. SyntaxError нет: return находится внутри стрелочной функции.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.