【发布时间】:2023-03-21 19:04:01
【问题描述】:
我正在使用 Eloquent Javascript。 count 函数接受一个数组和一个测试函数 (equals(x)) 作为参数,并返回数组中测试函数返回 true 的元素数量。
我了解这些函数的工作方式,并且逻辑上传递给 reduce 的匿名函数的 total 参数的值为零。
有人可以帮我看看总价值的具体来源吗?我想在脑海中有一个更清晰的画面。
function count(test, array) {
return reduce(function(total, element) { // Where is the value for total coming from?
return total + (test(element) ? 1 : 0);
}, 0, array);
}
function equals(x) {
return function(element) {return x === element;};
}
function countZeroes(array) {
return count(equals(0), array);
}
之前的减少函数:
function reduce(combine, base, array) {
forEach(array, function (element) {
base = combine(base, element);
});
return base;
}
之前的forEach函数:
function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
【问题讨论】:
-
base被作为total参数传递,据我所知。base这里是 0,所以total在那个评估中是 0。 -
是的,逻辑上我可以看到。我只是不清楚价值的具体来源。
-
这似乎与您的last question 几乎相同。这与您的上一个问题有什么不同?
-
是的,今天早上我又把昨天的东西都抽出来了,很清楚。这是它之后的以下代码。我想我只是在努力查看使用函数作为参数时行的运行方式。
-
所以看起来,是的,否则你当然不会问这个问题:P 我认为最好,如果你在我们开始之前描述你的思路,函数是如何交互的关于回答这个问题。
标签: javascript higher-order-functions