Результат равен 10: аккумулятор начинается с 4 и последовательно прибавляет 1, 2, 3. Без начального значения получится 6; пустой массив с начальным 4 вернёт 4.
Почему reduce возвращает 10 при начальном значении 4?
Результат равен 10: аккумулятор начинается с 4 и последовательно прибавляет 1, 2, 3. Без начального значения получится 6; пустой массив с начальным 4 вернёт 4.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Что вернёт [1,2,3].reduce((sum, x) => sum + x, 4) и почему? Сравните с вариантом без второго аргумента и с пустым массивом при наличии начального значения 4.
Ответ
Результат равен 10: аккумулятор начинается с 4 и последовательно прибавляет 1, 2, 3. Без начального значения получится 6; пустой массив с начальным 4 вернёт 4.
Промежуточные значения первого варианта: 5, 7, 10. Начальное значение — часть вычисления, а не настройка, которую reduce игнорирует. Без второго аргумента первый элемент становится аккумулятором, обработка начинается со второго. Пустой массив без начального значения бросает TypeError, поскольку брать исходный аккумулятор неоткуда.