我需要實作的函式應該采用一個函式來記憶,然后回傳一個新函式,該函式記住所提供函式的輸入。
這是一個練習,因為 memoize 函式不需要記住所有先前的值,只需要最后一個輸入值和函式回傳。
function memoizeTransform(f) {
// valOne & valTwo intend to record the input values
// of the function
let valOne
let valTwo
// lastResult intend to record the result value of the function
let lastResult
const memoize = (funct) => (x1, x2) => {
if (valOne === x1 && valTwo === x2) {
console.log("if statement")
return lastResult
} else {
lastResult = funct(x1, x2)
return lastResult
}
}
return memoize(f)
}
實際代碼無法訪問我嘗試記錄的先前值。
uj5u.com熱心網友回復:
可能你正在尋找這樣的東西:
function memoizeTransform(f) {
let valOne;
let valTwo;
let lastResult;
return (x1, x2) => {
if (valOne === x1 && valTwo === x2) {
console.log("Cached...");
return lastResult;
} else {
lastResult = f(x1, x2);
valOne = x1;
valTwo = x2;
return lastResult;
}
};
}
function sum(a, b) {
console.log('Calculating...');
return a b;
}
let f = memoizeTransform(sum);
console.log(f(1, 2));
console.log(f(1, 2));
console.log(f(2, 3));
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/492939.html
標籤:javascript 功能 优化 关闭 记忆
上一篇:ember.js存盤庫中的檔案