以下为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; };};