memoize快取函式

2021-10-05 14:30:52 字數 740 閱讀 7494

快取函式是指將上次的計算結果快取起來,當下次呼叫時,如果遇到相同的引數,就直接返回快取中的資料;

用斐波那契數枚舉例子,不用快取函式,count被呼叫453次:

var count =0;

var fibonacci = function(n)

for (let i = 0; i <= 10; i++)

console.log(count) // 453 次

而用快取函式,count只呼叫 12次

var count =0;

var fibonacci = function(n)

// 快取寫法 可以應付大量重複計算,或者大量的計算又依賴於之前的結果運算場景

var fibonaccifn = memoize(fibonacci);

for (let i = 0; i <= 10; i++)

console.log(count); // 12

是不是很驚喜,相差居然這麼大的

快取函式的原理其實很簡單,就是每次呼叫時,先判斷這個值是否存在,如果存在就把結果值返回,如果不存在,把當前的值和結果存在物件裡

// 乙個簡單的柯里化函式

let memoize = function(func,hasher)

memoize.cache={};

return memoize;

}

純函式,快取函式

不純的函式具有 下面以之前的計稅函式以例進行說明 var percentvalue 5 var calculatetax value 複製 這個函式不是純函式,主要因為它以來外部環境計算其邏輯,當外部環境改變時,它會影響結果。因此,純函式的主要特徵就是不依賴於任何外部變數,也不應該改變任何外部變數。...

快取沖洗函式

傳統的 unix 系統實現在核心中都設有緩衝區快取記憶體或頁快取記憶體,大多數磁碟 i o 都通過緩衝區進行。當向檔案寫入資料時,核心通常首先將資料複製到緩衝區中,然後排入佇列,晚些時候再寫入磁碟。這種方式被稱為 延遲寫 delayed write 通常,當核心需要重用緩衝區來存放其他磁碟塊資料時,...

vue函式快取

vue.js原始碼函式快取 create a cached version of a pure function.function cached fn capitalize a string.var capitalize cached function str 函式使用了閉包特性,儲存區域性變數ca...