我今天意识到_memoize函数只缓存提供的第一个参数的结果。
function add(a, b) {
return a + b;
}
var sum = _.memoize(add);
console.log(sum(1,2));
>>> 3
console.log(sum(1,5));
>>> 3
这是一个错误还是故意的?
答案 0 :(得分:5)
商榷。 Relevant docs:
默认的hashFunction只使用memoized函数的第一个参数作为键。
但好消息是你可以通过引入自己的哈希函数来改变这种行为。
function myInefficientHashFunction() {
// not really an efficient hash function
return JSON.stringify(arguments);
}
function add(a, b) {
return a + b;
}
var sum = _.memoize(add, myInefficientHashFunction);
document.getElementById('one_two').textContent = sum(1, 2)
document.getElementById('one_three').textContent = sum(1, 3)

<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script>
<div>1 + 2 = <span id="one_two"/></div>
<div>1 + 3 = <span id="one_three"/></div>
&#13;