Funções de ordem superior - Javascript
Eu estou trabalhando através do Eloquent Javascript. A funçãocontagem pega uma matriz e uma função de teste (é igual (x)) como argumentos e retorna a quantidade de elementos na matriz para a qual a função de teste retornou true.
Eu entendo a maneira ampla como essas funções estão funcionando e que logicamentetotal argumento para a função anônima passada para reduzir tem um valor de zero.
Alguém pode me ajudar a ver de onde vem o valor total? Eu quero ter uma imagem mais clara em minha mente.
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);
}
Reduzir a função do anterior:
function reduce(combine, base, array) {
forEach(array, function (element) {
base = combine(base, element);
});
return base;
}
Para cada função anterior:
function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}