说是常用,其实只是猪场的课程的标题叫做常用函数,在下工作中,似乎没有遇到过需要用到下面函数的场景,可能是我太菜了,没有看出来哪里可以使用。
缓存函数 memoizition 应用与需要大量重复计算或者依赖之前计算结果的函数
function memoize(fun) {
let calcs = {};
return function (key) {
if (!calcs[key]) {
calcs[key] = fun.apply(this, arguments);
}
return calcs[key];
};
}
用斐波那契函数测试一下
let count = 0;
function fibonacci(num) {
count++ //这个只是为了方便后续计算出计算次数
return num < 2 ? num : fibonacci(num - 1) + fibonacci(num - 2);
}
如果不用缓存函数,计算0-10的斐波那契数列需要计算的次数
for (let i = 0; i <= 10; i++) {
fibonacci(i)
}
console.log(count) ///453
使用缓存函数
fibonacci = memoize(fibonacci);
for (let i = 0; i <= 10; i++) {
fibonacci(i);
}
console.log(count); //12
可以看出使用缓存函数之后,需要的计算从453减少到12次,乍一看还是很牛皮的样子,希望以后项目中有机会用到吧。