> Как реализовать функцию add в JavaScript, которая накапливает аргументы и возвращает сумму при вызове без аргументов (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Домклик, Kaspersky
Стек: JavaScript
> Пример ответа
Вот один из элегантных способов реализовать такую функцию с использованием замыкания и переопределения метода valueOf:
JAVASCRIPTfunction add(...args) {const sum = args.reduce((acc, val) => acc + val, 0);const inner = (...nextArgs) => {if (nextArgs.length === 0) {return sum;}return add(sum, ...nextArgs);};// Позволяет использовать add(1)(2) + 3 или Number(add(1)(2))inner.valueOf = () => sum;inner.toString = () => String(sum);return inner;}
Как это работает:
- При вызове
add(1)(2)(3)()возвращается сумма всех переданных аргументов. - Если вызвать без аргументов (
add()), возвращается 0 (сумма пустого массива). - Благодаря
valueOfиtoString, можно использовать результат в арифметических операциях:add(1)(2) + 3даст 6.
Примеры использования:
JAVASCRIPTadd(1)(2)(3)(); // 6add(1, 2, 3)(4)(); // 10add(5)(); // 5add()(); // 0add(1)(2) + 3; // 6 (благодаря valueOf)
Этот подход гибкий: поддерживает как цепочки вызовов, так и передачу нескольких аргументов за раз.
> Похожие задачи по frontend
Что такое микрозадачи и макрозадачи
Уровень: juniorКатегория: Технические вопросы
Компания: Т-Банк, МТГ Бизнес решения
Стек: JavaScript
Что такое bind в JavaScript и как он работает
Уровень: juniorКатегория: Технические вопросы
Компания: Альфа-банк, YADRO
Стек: JavaScript
В чем разница package-lock.json и package.json
Уровень: middleКатегория: Технические вопросы
Компания: ВСК, Сбер
Стек: JavaScript
Как обрабатывать случаи отклонения одного из промисов в Promise.all в JavaScript?
Уровень: seniorКатегория: Технические вопросы
Компания: EPAM, Яндекс
Стек: JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью