Не могу понять откуда столько вызовов
alert( sum(0)(1)(2)(3)(4)(5) ); // 15
и почему вложенная функция возвращает саму себя(получается рекурсия?), а так же почему внешняя возвращает вложенную?
UPD: Я прошу объяснить, как работает данный код, а не что это такое.
Буду благодарен за объяснение.
function sum(a) {
let currentSum = a;
function f(b) {
currentSum += b;
return f;
}
f.toString = function() {
return currentSum;
};
return f;
}
alert( sum(1)(2) ); // 3
alert( sum(5)(-1)(2) ); // 6
alert( sum(6)(-1)(-2)(-3) ); // 0
alert( sum(0)(1)(2)(3)(4)(5) ); // 15