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