Код Senior Реализация с нуля обновлено

Сложение цепочкой вызовов

Условие

add(2)(1)() === 3. Каждый вызов с числом добавляет его, вызов без аргументов завершает цепочку и возвращает сумму. add() без аргументов сразу даёт 0.

Что проверяют тесты

  • без аргументов

  • два звена

  • три звена

  • одно звено

  • цепочки независимы

Как подойти

Вариадическая цепочка. Признак конца - именно undefined, а не ложность: add(0)() должно давать 0, а не заканчиваться раньше. Состояние живёт в замыкании конкретной цепочки, поэтому две цепочки не мешают друг другу - это и проверяет последний тест.

Подсказки: 3
  1. Пустой вызов - признак конца, его надо отличать от вызова с нулём.
  2. Возвращай ту же функцию, накапливая сумму в замыкании.
  3. Отдельная цепочка должна иметь своё состояние.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.