探索函数式编程:纯函数 | 高阶函数 | 函数柯里化 | 组合函数

时间:2025-04-15 15:00:13
+ 返回一个函数: 通过高阶函数,实现一个简单的缓存功能 function memoize(coreFn, resolver) { // -- coreFn:核心函数 resolver?:自定义缓存规则函数(返回值返回对应的 key 值) const cache = new Map() // -- 缓存表 return function (...args) { // -- 每次调用函数,都重新创建一个对应的缓存 key,后续永 key 进行判断是否已经缓存过了 const cacheKey = typeof resolver === "function" ? resolver(...args) : args[0] // -- 判断用户是否传入自定义缓存 key,如果没有则按默认只取第一个参数作为缓存 key let cacheResolve = cache.get(cacheKey) // -- 根据 cacheKey 获取对应的缓存数据 → 如果没有 ↓ if (!cacheResolve) { // -- 当没有相应的缓存信息时,执行 coreFn 原方法,并将其缓存起来 cacheResolve = coreFn(...args) cache.set(cacheKey, cacheResolve) } return cacheResolve } } + TEST function sum(a, b) { console.log("真实执行") return a + b } const memoizedSum = memoize(sum, (...args) => { return JSON.stringify(args) // -- 定义缓存规则: 按照所有的参数进行缓存 → 默认只会按照第一个参数进行缓存(不常用) }) console.log(memoizedSum(1, 3)) console.log(memoizedSum(2, 3)) console.log(memoizedSum(1, 6)) console.log(memoizedSum(1, 3))