Показанная цепочка 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 нельзя.