#javascript
const sum = (a) => { let sum = a; const func = (b) => { if (b) { sum += b; return func; } else { return sum; } }; return func; }; sum(2)(3)() Есть такая функция, за счёт чего можно функцию так вызывать? Вторые скобочки - это аргумент или это другой вызов функции?
Ответы
Ответ 1
sum(2): вызывается функция sum, в качестве аргумента передаётся 2 sum(2)(3): результат выполнения sum(2) вызывается как функция, в качестве аргумента передаётся 3. К ошибке это не приводит, так как sum действительно возвращает функцию (func) sum(2)(3)(): результат выполнения sum(2)(3) вызывается как функция, аргументы не передаются. К ошибке это также не приводит, так как func в данном случае возвращает функцию (func) Вызов sum(2)()() или sum(2)(0)(), например, привёл бы к ошибке: Uncaught TypeError: sum(...)(...) is not a function потому что в этом случае func вернёт число (sum), а не функцию
Комментариев нет:
Отправить комментарий