缓存函数的结果?

Iva*_*van 5 javascript caching

在 Javascript 中,有没有办法缓存以下函数的结果:

  • 一种)。计算成本高。
  • b)。多次调用。

以一个经常被调用的递归阶乘函数为例。通常我会创建一个单独的数组,例如facotrialResults = [];并在计算结果时将结果添加到它们中,factorialResults[x] = result; 但是,是否有更好的方法来完成此缓存而不使用向全局命名空间添加新变量?

mat*_*sko 5

您可以将哈希附加到要缓存的函数。

var expensive_fn = function(val) {
  var result = arguments.callee.cache[val];
  if(result == null || result == undefined) {
    //do the work and set result=...
    arguments.callee.cache[val]=result;
  }
  return result;
}
expensive_fn.cache = {};
Run Code Online (Sandbox Code Playgroud)

这将要求该函数是一个没有副作用的 1-1 函数。