Мемоизация — это метод сохранения предыдущих результатов для сокращения времени выполнения функции в обмен на затраты места. Запуск запоминаемой функции с аргументами, с которыми она запускалась ранее, может найти результат вместо того, чтобы вычислять снова и снова. Вот запомненная функция:
const memoization = fn => { const cache = {}; return function(…args) { if (cache[args]) { return cache[args]; } const result = fn.apply(this, args); cache[args] = result return result; }; };
- Мемоизация возьмет на себя функцию (fn).
- Он будет хранить объект, называемый кешем, в котором будут храниться предыдущие результаты.
- Он вернет функцию, которая принимает все аргументы, используя …args (получая их в виде массива).
- Если ключ аргументов найден в объекте, он вернет значение в качестве результата.
- В противном случае он вызовет функцию (fn) с .apply, которая принимает два аргумента: то, чему вы хотите присвоить ключевое слово «this», и массив аргументов, поэтому мы используем args.
- Затем он сохранит этот результат в объекте кеша с ключом args.
- Результат функции присваивается переменной с именем result и возвращается результат.