简介
在本实验中,我们将探索 JavaScript 中的记忆化(memoization)概念。记忆化是一种通过缓存昂贵函数调用的结果,并在再次出现相同输入时返回缓存结果来优化函数性能的技术。通过本实验,我们将学习如何使用 Map
对象在 JavaScript 中实现记忆化。
这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 100%。获得了学习者 92% 的好评率。
This tutorial is from open-source community. Access the source code
💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版
在本实验中,我们将探索 JavaScript 中的记忆化(memoization)概念。记忆化是一种通过缓存昂贵函数调用的结果,并在再次出现相同输入时返回缓存结果来优化函数性能的技术。通过本实验,我们将学习如何使用 Map
对象在 JavaScript 中实现记忆化。
要开始编码,请打开终端/SSH 并输入 node
。此函数返回记忆化(缓存)函数。以下是使用此函数的步骤:
Map
对象以创建一个空缓存。function
关键字,以便在必要时允许记忆化函数的 this
上下文发生变化。cache
设置为返回函数的一个属性,以便可以访问它。以下是实现记忆化函数的代码:
const memoize = (fn) => {
const cache = new Map();
const cached = function (val) {
return cache.has(val)
? cache.get(val)
: cache.set(val, fn.call(this, val)) && cache.get(val);
};
cached.cache = cache;
return cached;
};
要了解此函数的工作原理,可以将其与 anagrams
函数一起使用。以下是一个示例:
const anagramsCached = memoize(anagrams);
anagramsCached("javascript"); // 耗时较长
anagramsCached("javascript"); // 由于已缓存,几乎立即返回
console.log(anagramsCached.cache); // 缓存的变位词映射
恭喜你!你已经完成了“记忆化函数”实验。你可以在 LabEx 中练习更多实验来提升你的技能。