Memoization là kỹ thuật cache kết quả của hàm dựa trên input để tránh tính toán lại.
Hiệu quả với pure functions có tính toán nặng hoặc đệ quy như Fibonacci.
javascript
function memoize(fn) {
const cache = new Map();
return function(...args) {
const key = JSON.stringify(args);
if (cache.has(key)) return cache.get(key);
const result = fn.apply(this, args);
cache.set(key, result);
return result;
};
}
const expensiveFib = memoize(function fib(n) {
if (n <= 1) return n;
return expensiveFib(n - 1) + expensiveFib(n - 2);
});
expensiveFib(40); // nhanh — cache hit sau lần đầuLưu ý: JSON.stringify không phù hợp nếu args là object có circular reference.