我被問到這個問題,我不知道我該如何瞄準這個。JavaScript寫一個函數緩存一個函數(記憶)
問:
編寫一個緩存的功能,並返回如果 它在過去已經執行結果的緩存功能。
Let's say if there's a function Fibonacci(20) = 6765
cacheFunction(Fibonacci(20)) // it should not execute the function instead return 6765.
But if i give cacheFunction(Fibonacci(21)) //It's not cached, execute the function
我嘗試:
function cacheFunction(funct) {
var obj = {};
if (obj.hasOwnProperty(funct)) { //checking if the argument is in the object?
return obj[funct];
} else { //if not present, then execute the function, store it in cache and return the value.
obj[funct];
return funct;
}
}
但我無法理解如何讓參數在一個函數另一個函數裏面? (這個人告訴我,我需要使用關閉來獲得它)
有人能夠啓發我嗎?
BTW:http://stackoverflow.com/search?q=javascript+memoize –
可能重複[Javascript Memoization Explanation?](http://stackoverflow.com/questions/8548802/javascript-memoization-explanation) – m0meni