[Solved] Javascript function executed in this pattern “xyz()()” throws error?


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?