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