摘要:冴羽的博客学习函数记忆
函数记忆
函数记忆是指将上次的计算结果缓存起来,当下次调用时,如果遇到相同的参数,就直接返回缓存中的数据。也就指明了函数记忆的使用场景:需要大量重复的计算,或者大量计算又依赖于之前的结果
第一版
1 | // 《JavaScript权威指南》8.8.4记忆 |
注意:使用join拼接参数字符串时要考虑到toString隐式转换,传入对象时会出现问题
第二版
1 | // underscore |
以斐波那契数列(从第3项开始,每一项都等于前两项之和)为例:
1 | var count = 0; |
不使用函数记忆
1 | for (var i = 0; i <= 10; i++){ |
每次计算索引大于1的值时都要先得到前两项的值,而前两项的索引如果大于1的话又需要得到更在前面的两项的值,这里面存在大量重复的计算
使用函数记忆
1 | fibonacci = memoize(fibonacci) |