blob: 966025fdf904a8cf7a1e1d31524168d2d73af528 (
plain) (
tree)
|
|
#!/usr/bin/env node
"use strict";
/**
* @param {Function} fn
* @return {Function}
*/
function memoize(fn) {
const cache = {};
return function memoized(...args) {
const key = JSON.stringify(args);
if (key in cache) {
return cache[key];
}
const result = fn(...args);
cache[key] = result;
return result;
};
}
/**
* let callCount = 0;
* const memoizedFn = memoize(function (a, b) {
* callCount += 1;
* return a + b;
* })
* memoizedFn(2, 3) // 5
* memoizedFn(2, 3) // 5
* console.log(callCount) // 1
*/
|