1. 程式人生 > >函數語言程式設計之memories

函數語言程式設計之memories

純函式:是這樣一種函式,即相同的輸入,永遠會得到相同的輸出,而且沒有任何可觀察的副作用。

這樣的純函式好處便是可以進行快取,稱之為memorize,

只是下面的函式不夠健壯

function memorize(fn) {

    let cache = {}

   return function () {

       let arg_str = JSON.stringfy(arguments)

       cache[arg_str] = cache[arg_str] || fn.apply(this, arguments)

       return cache[arg_str]

   }

}

let doubleX = memorize((x) => {  return 2 * x })

doubleX(2) // 4

doubleX(2) // 4 從快取中讀取的

具體的Vue原始碼中的 cache 就運用了這種技術