Olá Caio, tudo bom?
Bom, não sou o professor mas vou me meter um pouco e tentar te ajudar :P
Então, referente a sua primeira dúvida: você está acionando o percorreArray no arquivo muda-de-cor.js.
Neste trecho você está chamando a função percorreArray para funcionar. Os trs tu já passou com a variável trs
e o comportamento tu está passando com a função anônima:
precorreArray(trs, function(tr) {
//codigo
});
Perceba que ela é chamada do mesmo jeito que você a chamou no arquivo imprime-nome.js.
Para a sua segunda dúvida: Quando você chama uma função, ela vai pegar os parâmetros que você passou nela (Ex: funcaoExemplo(parametro1, parametro2);
) e colocar no lugar dos valores que você definiu quando criou a função.
Vou tentar explicar usando a percorreArray().
Aqui está ela:
//arquivo precorre.js
function precorreArray(trsPacientes, comportamento) {
for(var posicaoAtual = 0; posicaoAtual <= trsPacientes.length - 1; posicaoAtual++){
var pacienteTrAtual = trsPacientes[posicaoAtual];
comportamento(pacienteTrAtual);
}
}
Se você chama ela desse jeito...
precorreArray(trs, function(tr) {
tr.addEventListener("dbclick", function() {
this.setAttribute("bgcolor", "grey");
});
});
O que vai resultar no final é isso:
function precorreArray(trs, comportamento) { //variavel trs é colocada no 1 parametro
for(var posicaoAtual = 0; posicaoAtual <= trs.length - 1; posicaoAtual++){//ela é colocada para funcionar no loop
var pacienteTrAtual = trs[posicaoAtual]; //a tr selecionada será uma das TRs da variavel trs
function(pacienteTrAtual) { //a tr que foi selecionada anteriormente é passada pra função anonima
pacienteTrAtual.addEventListener("dbclick", function() {//é adicionado um evento Listener na tr que está sendo selecionada
this.setAttribute("bgcolor", "grey");
});
}
}
Bom, espero que eu tenha conseguido te ajudar. Ficou meio grande a explicação, mas foi o máximo que consegui :P
De qualquer maneira, ficou claro agora ou ainda permaneces com a dúvida?
Abraço!