FE

JS Memoization

React.memo 的原理

Posted by nolan on February 12, 2020

源码


function memo(func){
  var cache = {};
    return function(){
      var key = JSON.stringify(arguments);
      if (cache[key]){
        console.log(cache)
        return cache[key];
      }
      else{
        val = func.apply(null, arguments);
        cache[key] = val;
        return val;
      }
  }
}

利用 闭包 的原理,维护一个 cache 的闭包变量,缓存函数的计算结果,使得函数执行更快。

应用


//斐波那契数列
var fib = memo(function(n) {
   if (n < 2){
     return 1;
   }else{

     return fib(n-2) + fib(n-1);
   }
});

参考

Understanding JavaScript Memoization In 3 Minutes