何泽弘

何泽弘的博客

这是一个中二半吊子码农分享学习经验和生活的网站...

缓存函数执行的结果


缓存函数执行的结果

代码实现


/**
 *
 *
 * @param func 需要缓存化的函数
 * @returns 返回缓存化后的函数
 */
function memoize (fn) {
  function func () {
    var argsJson = JSON.stringify(arguments)
    var resultMap = func.resultMap
    if (resultMap[argsJson]) return resultMap[argsJson]
    resultMap[argsJson] = fn.apply(this, arguments)
    return resultMap[argsJson]
  }
  func.resultMap = {}
  return func
}

使用方法


function add (number1, number2) {
  // 参数一样的时候,函数只会执行一次,并将结果缓存起来。
  return number1 + number2
}

var add = memoize(add) // 加工函数

add(1, 2)

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的