以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
122. 实现 memoizeOne()

思路:定义一个变量存储上次调用的参数和结果,每次新参数传入时先进行比较是否相等,如果相等则直接返回上次的结果,否则重新计算结果并更新存储的参数和结果。

代码实现:

function memoizeOne(func, isEqual = (a, b) => a === b) {
  let lastArgs = null;
  let lastResult = null;

  return function (...args) {
    if (!lastArgs || !isEqual(args, lastArgs)) {
      lastArgs = args;
      lastResult = func.apply(this, args);
    }
    return lastResult;
  };
}

其中isEqual参数默认为判断两个值是否相等的===操作符,如果有传入isEqual参数则使用该参数判断是否相等。