Can somebody explain to me how the toString trick works in the following example. The function adds all the arguments being passed for each call so add(1)(2)(3);
equals 6.
function add(a) { var sum = a; return function self(a) { sum += a; self.toString = function () { return sum; } return self; } } console.log(add(1)(2)(3));
Advertisement
Answer
Since the function is a chain function, you need to return a function to be chained which then returns itself.
However, you also need a meaningful way to get its result.
In jQuery, for example, you might see .get()
used to extract results from a chained operation. This is much the same, using .toString()
to mean “if you’re putting me somewhere a string is expected, return the result”.