Сумма трёх чисел, реализованная через каррирование

Показанная цепочка a => b => c => a + b + c уже является решением. Каждый промежуточный вызов возвращает функцию, сохраняя предыдущие аргументы в замыкании.

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

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

Показанная цепочка a => b => c => a + b + c уже является решением. Каждый промежуточный вызов возвращает функцию, сохраняя предыдущие аргументы в замыкании.

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

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

Условие

Создайте функцию, принимающую три аргумента последовательно (каждый вызов возвращает новую функцию, ожидающую следующий аргумент) и в итоге возвращающую их сумму. Пример использования:

const add = (a) => (b) => (c) => a + b + c;
console.log(add(1)(2)(3)); // 6

Функция должна работать для любых числовых значений, переданных по цепочке вызовов.

Ответ

Показанная цепочка a => b => c => a + b + c уже является решением. Каждый промежуточный вызов возвращает функцию, сохраняя предыдущие аргументы в замыкании.

const add = a => b => c => a + b + c;
add(1)(2)(3); // 6
const addFive = add(2)(3);
addFive(10); // 15

После второго вызова сумма ещё не возвращается: остаётся функция для третьего числа. Поддерживаются отрицательные и дробные Number с обычными ограничениями двоичной арифметики. Строковые аргументы нарушают числовой контракт, поскольку + может выполнить конкатенацию. Смешивать Number и BigInt нельзя.

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

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

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

Подробнее