1 function memorize(f){ 2 var cache = {}; 3 return function(){ 4 var key = arguments.length + Array.prototype.join.apply(this,arguments); 5 if(key in cache){ 6 7 return cache[key]; 8 } else{ 9 return cache[key] = f.apply(this, arguments); 10 } 11 } 12 } 13 function add(a,b){ 14 return a + b; 15 } 16 var adder = memorize(add); 17 for(var i=0;i<4;i++){ 18 console.log(adder(1,2)); 19 }