Skip to content

memoize

函数记忆化,缓存函数执行结果以提升性能。

函数签名

typescript
function memoize<T extends (...args: any[]) => any>(
  fn: T
): T & { cache: Map<string, ReturnType<T>> }

参数

参数名类型必填说明
fnFunction要记忆化的函数

返回值

类型说明
T & { cache: Map }记忆化后的函数,附带 cache 属性用于访问缓存

工作原理

  1. 创建 Map 用于存储缓存
  2. 返回包装函数:
    • 使用 JSON.stringify 将参数序列化为缓存键
    • 检查缓存中是否有该键:
      • 有:直接返回缓存的结果
      • 无:执行原函数,将结果存入缓存,然后返回
  3. 在包装函数上添加 cache 属性,允许外部访问和清空缓存

适用于纯函数(相同输入总是产生相同输出),可显著提升重复调用的性能。