Почему map с фигурными скобками возвращает undefined?

Получится [undefined, undefined, undefined]: у стрелки с телом в фигурных скобках нет автоматического возврата выражения. Добавьте return или уберите фигурные скобки.

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

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

Получится [undefined, undefined, undefined]: у стрелки с телом в фигурных скобках нет автоматического возврата выражения. Добавьте return или уберите фигурные скобки.

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

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

Условие

Разработчик ожидает [2,4,6], но выполняет const result = [1,2,3].map(x => { x * 2; });. Объясните результат и покажите два корректных исправления.

Ответ

Получится [undefined, undefined, undefined]: у стрелки с телом в фигурных скобках нет автоматического возврата выражения. Добавьте return или уберите фигурные скобки.

const a = [1, 2, 3].map(x => { return x * 2; });
const b = [1, 2, 3].map(x => x * 2);

Map собирает возвращённые значения callback для каждого элемента. Само вычисление x * 2 не изменяет x и не определяет результат функции. Для возврата объектного литерала короткой стрелкой используют круглые скобки: x => ({value: x * 2}).

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

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

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

Подробнее