记忆函数有点类似于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-01-17 11:46:07 发布
文章介绍了记忆函数的概念,它通过缓存结果来避免重复计算,提高性能。记忆函数在值未改变时直接返回缓存结果,而Vue的computed属性只有在依赖改变时才执行。文中使用了一个例子,展示了如何用记忆函数优化计算密集型操作,如求平方的耗时过程。
摘要由CSDN通过智能技术生成