Возникнет TypeError до console.log(array2): forEach возвращает undefined, а у undefined нельзя вызвать filter. Значения callback forEach не собираются в массив.
Какой результат будет выведен в консоль (пример 69)
Возникнет TypeError до console.log(array2): forEach возвращает undefined, а у undefined нельзя вызвать filter. Значения callback forEach не собираются в массив.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, что отобразится в консоли после выполнения следующего кода:
const array = [1,2,3];
const array2 = array.forEach(item => item * 2).filter(item => item > 2);
console.log(array2) // ?
Ответ
Возникнет TypeError до console.log(array2): forEach возвращает undefined, а у undefined нельзя вызвать filter. Значения callback forEach не собираются в массив.
Исправление:
const array2 = array.map(item => item * 2).filter(item => item > 2);
console.log(array2); // [4, 6]
map создаёт массив [2,4,6], затем filter оставляет элементы строго больше двух. Исходный array не меняется. forEach предназначен для побочных действий над элементами и всегда возвращает undefined; арифметическое выражение в его callback само по себе не обновляет элементы входного массива.