UNPKG

mathjs

Version:

Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with dif

33 lines (28 loc) 604 B
/* MIT License http://www.opensource.org/licenses/mit-license.php */ "use strict"; /** @template T @typedef {function(): T} FunctionReturning */ /** * @template T * @param {FunctionReturning<T>} fn memorized function * @returns {FunctionReturning<T>} new function */ const memoize = fn => { let cache = false; /** @type {T} */ let result = undefined; return () => { if (cache) { return result; } else { result = fn(); cache = true; // Allow to clean up memory for fn // and all dependent resources fn = undefined; return result; } }; }; module.exports = memoize;