Есть ли разница между передачей callback в `forEach` как ссылки на функцию и через стрелочную обёртку? Будет ли разница, если функция является методом класса?

forEach передаёт callback три аргумента: элемент, индекс и массив. Стрелочная обёртка может изменить набор аргументов и сохранить нужный способ вызова метода.

Короткий ответ

Что ответить на собеседовании

forEach передаёт callback три аргумента: элемент, индекс и массив. Стрелочная обёртка может изменить набор аргументов и сохранить нужный способ вызова метода.

Подробный разбор

Ответ с пояснениями

forEach передаёт callback три аргумента: элемент, индекс и массив. Стрелочная обёртка может изменить набор аргументов и сохранить нужный способ вызова метода.

items.forEach(obj.handle) может потерять this, а items.forEach(item => obj.handle(item)) вызывает метод через obj. Альтернатива — второй аргумент thisArg у forEach для обычной функции или bind. Обёртка важна и без this: переданный напрямую callback может неожиданно использовать индекс как второй параметр.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее