我們想要創建一個函數,在連續調用時將數字加在一起。
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);