JavaScript 缓存基本原理

// 这是个闭包函数,接收一个函数,可以把接收的函数转换成具有缓存能力的函数
var memoize = function(f) {
  // 使用一个 cache 对象来进行缓存
  var cache = {};

  // 返回一个函数,这个函数就是具有缓存功能的 f 函数
  return function() {
    // 缓存的 key 是通过 arguments 生成的
    var arg_str = JSON.stringify(arguments);
    // 当有缓存的时候直接取缓存的,没缓存则只需 f 函数并进行缓存
    cache[arg_str] = cache[arg_str] || f.apply(f, arguments);
    return cache[arg_str];
  };
};

主要就是使用了一个 cache 对象来进行数据缓存,通过某种方式(如参数)生成一个独一无二的 key,对应的值就是缓存的值。

只要再次传入相同的参数,就从 cache 中进行取值,而不再进行计算

原文地址:https://www.cnblogs.com/3body/p/6497634.html