学习资源#
完整代码#
function memoize(func, resolver) {
const memoized = function (...args) {
const key = resolver ? resolver.apply(this, args) : args[0];
if (memoized.cache.has(key)) {
return memoized.cache.get(key);
}
const result = func.apply(this, args);
memoized.cache.set(key, result);
return result;
}
memoized.cache = new WeakMap();
return memoized;
}
知识细节#
-
该函数做了什么事情?
- 可以做缓存(即在参数相同的时候,会取上一次返回结果,不会再调用方法);
- 可以通过
.cache.set
设置缓存key对应的值。
-
逻辑拆解
-
基础结构:传入一个函数,返回一个函数

-
功能实现
-
实现可以通过.cache.set
方法设置缓存功能

-
实现调用函数时,尽量从缓存结果中获取缓存

-
处理函数第二个参数功能。--用于规定缓存的键。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现