It would only work if recursiveSum
would return a function.
Right now, you try to execute the return value of recursiveSum(1)
as a function. It isn’t (it’s undefined
), and thus an error is thrown; you try to execute undefined(2)(3)
.
You could do something like this.
function currySum(x) {
return function(y) {
return function(z) {
return x + y + z;
}
}
}
console.log(currySum(1)(2)(3));
If you have a variable number of arguments and want to use this currying syntax, look at any of the questions Bergi mentioned in a comment: this one, that one, another one or here.
Alternatively, write an actual variadic function:
function sum() {
var s = 0;
for (let n of arguments) {
s += n;
}
return s;
}
// summing multiple arguments
console.log(sum(1, 2, 3, 4));
// summing all numbers in an array
console.log(sum.apply(null, [1, 2, 3, 4]));
2
solved Javascript function executed in this pattern “xyz()()” throws error?