function memory(fn) {
var cache = {};
return function() {
var key = arguments.length + Array.prototype.join.call(arguments, ',');
cache[key] = cache[key] || fn.apply(this, arguments);
return cache[key];
}
}
var sum = memory(function(a, b) {
console.log('Hello world');
return a + b;
});
console.log(sum(2, 8));
console.log(sum(2, 8));