#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), а не функцию
Комментариев нет:
Отправить комментарий