Задать вопрос
@Shimpanze

Объясните про forEach?

Здравствуйте!

var arr = ["Яблоко", "Апельсин", "Груша"];

arr.forEach(function(item, i, arr) {
  alert( i + ": " + item + " (массив:" + arr + ")" );
});


Третий параметр у callback-функции «arr» это «массив, который перебирается».

Но ведь массив который перебирается задаётся сразу перед методом «forEach» — arr.forEach(function(...?

Для чего его пихать ещё и в callback-функцию-то, не пойму?

Спасибо!
  • Вопрос задан
  • 278 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 2
filgaponenko
@filgaponenko
frontend developer
Это удобно использовать в случае использования именованной функции в качестве коллбека для forEach.
Так как функция может быть определена где-то в другом месте (например мы ее импортируем из другого модуля), она может не иметь доступа к области видимости в которой хранится массив использующий ее.

Также, даже если из функции доступен массив из внешней области видимости — все равно хорошим тоном считается использование аргумента функции.

arr.forEach(doSomeStuffForEveryItem);

function doSomeStuffForEveryItem(item, i, arr) {
  теперь тут arr доступен через переменную.
}
Ответ написан
Комментировать
rockon404
@rockon404
Frontend Developer
Но ведь массив который перебирается задаётся сразу перед методом

Массив не задается, нем лишь вызывается метод. Задаете вы его выше.

Для чего его пихать ещё и в callback-функцию-то, не пойму?

Колбек функция может передаваться из другого места и при этом использовать массив.
arr.forEach(callback);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Для удобства.
Можно же вообще через for ... in перебирать, но через forEach удобнее же.

Просто очередная крупинка синтаксического сахара.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы