Верните функцию next, которая изменяет закрытую сумму и возвращает сама себя. Метод value читает эту сумму; каждый начальный вызов add создаёт независимую цепочку.
Как реализовать цепочку add(2)(3)(4) с явным результатом?
Верните функцию next, которая изменяет закрытую сумму и возвращает сама себя. Метод value читает эту сумму; каждый начальный вызов add создаёт независимую цепочку.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Нужна функция add, принимающая число и возвращающая вызываемую функцию для следующих слагаемых. Результат читается через .value(), например add(2)(3)(4).value() должно дать 9. Не используйте неявное преобразование объекта в число.
Ответ
Верните функцию next, которая изменяет закрытую сумму и возвращает сама себя. Метод value читает эту сумму; каждый начальный вызов add создаёт независимую цепочку.
function add(initial) {
let total = initial;
function next(value) { total += value; return next; }
next.value = () => total;
return next;
}
console.log(add(2)(3)(4).value()); // 9
Это изменяемая цепочка: две ссылки на один next разделяют сумму. Если нужны независимые ветви вычисления, каждый шаг должен возвращать новый объект или новую функцию с собственным total. Вход по условию состоит только из чисел.