我们想要创建一个函数,在连续调用时将数字加在一起。
add(1)(2);
// returns 3
我们还希望能够继续为函数添加数字。add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10
add(1)(2)(3)(4)(5); // 15
等等。单个调用应该返回传入的数字。
add(1); // 1
我们应该能够存储返回的值并重用它们。var addTwo = add(2);
addTwo; // 2
addTwo + 5; // 7
addTwo(3); // 5
addTwo(3)(5); // 10
我们可以假设传入的任何数字都是有效的整数。
当执行的时候触发add函数,当取值的时候返回当前值,这里可以改写函数的valueOf或toString方法。具体见这篇文章
function add(num) {
let sum = 0;
const plus = (n) => {
sum += n;
return plus;
}
plus.toString = function () {
return sum;
}
return plus(num);
}
const res = add(1)(2)(3);