【发布时间】:2015-12-09 04:25:21
【问题描述】:
一直在尝试通过查看下划线文档并尝试编写我自己的更常用函数的版本来了解有关函数式编程的更多信息。
遇到“memoize” - 我无法将头绕在它周围,并在 Crockford 的“The Good Parts”中找到了一些信息。
_.memoize = function(func) {
// 'cache' object is used to hold the result of the memoized fn's call
var cache = {};
var recur = function(n) {
var result = cache[n];
if (typeof result === 'undefined') {
result = func.apply(this, arguments);
cache[n] = result;
}
return result;
}
return recur;
};
您能否帮助我了解我是否有必要使用 .apply,以及我是否可以对这段代码进行任何核心改进?非常感谢您的帮助!
【问题讨论】:
-
是的,apply 的使用是必要的,因为你不知道
func将有多少个参数 -
那是你自己写的代码?你有什么不明白的吗?或者下划线的哪些部分你不明白?
-
@Bergi - 我能够找到这个解决方案,但我想看看是否有任何错误或改进。正如我在下面提到的,我已经改变了 typeof 的使用并改用 hasOwnProperty 。但是,我正在尝试弄清楚如何防止 memoized 函数运行超过它需要的次数。
-
也许这个问题最好在Code Review 提问。不过没关系。