[codes] 函數顆粒化

我們想要創建一個函數,在連續調用時將數字加在一起。

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);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章