Введение
В этом лабе мы будем изучать концепцию мемоизации в JavaScript. Мемоизация - это техника, используемая для оптимизации производительности функции путём кеширования результатов дорогостоящих вызовов функций и возврата кешированного результата при повторном появлении тех же входных данных. С помощью этого лабараторийного занятия мы научимся реализовывать мемоизацию в JavaScript с использованием объекта Map.
Функция мемоизации
Для начала кодирования откройте Терминал/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, чтобы улучшить свои навыки.