Javascript中的缓存函数

Javascript中的缓存函数,javascript,Javascript,如何在JavaScript中缓存任何函数的执行 如果在一个缓存函数中传递多个参数怎么办?您可以有一个方法,在该方法中传递一个函数,它将在内部维护一个缓存对象,计算值将缓存在该对象中。当您使用相同的参数调用函数时,将提供缓存的值 function cacheFn(fn) { var cache={}; return function(arg){ if (cache[arg]){ return cache[arg]; }

如何在JavaScript中缓存任何函数的执行


如果在一个缓存函数中传递多个参数怎么办?

您可以有一个方法,在该方法中传递一个函数,它将在内部维护一个缓存对象,计算值将缓存在该对象中。当您使用相同的参数调用函数时,将提供缓存的值

function cacheFn(fn) {
    var cache={};

    return function(arg){
        if (cache[arg]){
           return cache[arg];
        }
        else{
           cache[arg] = fn(arg);
            return cache[arg];
        }
    }
}
如果要传递多个参数,首先必须使用参数获取传递给函数的所有参数,然后才能为缓存对象生成密钥。为缓存对象生成密钥可能很棘手,一个解决方案可能是获取所有参数并将它们连接起来。请看下面的代码

return function(){
  var args = arguments;  
  var key = [].slice.call(args).join('');
  if(cache[key]){
      return cache[key];
  }
  else{
      cache[key] = fn.apply(thi, args);
      return cache[key];
  }
}

你说的缓存是什么意思?请不要无缘无故地用粗体字写你的文字。请明确说明您试图实现的目标:将函数结果存储在变量中,就像任何语言一样?您想做什么,哪些不起作用?当然,这假设参数可以有意义地强制为字符串。