以下为ChatGPT自动生成的解答,正确与否请自行判断。
BFE.devAI解答 - JavaScript 代码题
14. 实现`memo()`
实现思路:
使用一个对象作为缓存,以参数作为 key,以调用结果作为 value。
如果已经有缓存,则直接返回缓存中的结果;否则执行函数,并将结果加入缓存中。
如果函数有第三个参数作为决定缓存 key 的函数,则用该函数生成 key。
实现代码如下:
const memo = (func, getKey = (...args) => args.join('_')) => {
const cache = {};
return (...args) => {
const key = getKey(...args);
if (key in cache) {
return cache[key];
}
const result = func(...args);
cache[key] = result;
return result;
};
};