记忆函数有点类似于vue的computed , 都会对结果进行缓存 , 结果发生改变的时候才会进行重新调用 , 但我个人认为记忆函数要比computed强大 , 记忆函数可以对已经存储过的值直接拿出来调用 而非像computed只有上次值和本次值发生改变才执行
fn2() { // 引用函数 const memoize = (func) => { // 创建结果缓存 const results = {}; // 返回函数 return (...args) => { // 为结果缓存创建键 const argsKey = JSON.stringify(args); // 仅在没有缓存值时执行 func if (!results[argsKey]) { // 将函数调用结果存储在缓存中 results[argsKey] = func(...args); } // 返回缓存值 return results[argsKey]; }; }; const inefficientSquare = memoize((num) => { let total = 0; for (let i = 0; i < num; i++) { for (let j = 0; j < num; j++) { total++; } } return total; }); // 第一次执行↓ console.log(inefficientSquare(40000)); // 1600000000 // 第二次执行↓ console.log(inefficientSquare(40001)); // 1600000001 console.log(inefficientSquare(40000)); // 1600000000 console.log(inefficientSquare(40001)); // 1600000001 },
js记忆函数
最新推荐文章于 2024-09-07 17:08:25 发布