2
respostas

Função percorreArray aula 6

Professor, no segundo vídeo da Aula 6 de JavaScript: Programando na linguagem web, você cria a função percorreArray que recebe 2 parâmetros, o primeiro é a variável 'trs' que você declarou na linha anterior e o segundo uma função anônima que recebe um parâmetro chamado 'tr'.

Me vieram duas dúvidas, a primeira é como a função percorreArray é acionada se você não à adicionou às linhas da tabela por meio de nenhum listener ou atributo, a segunda é como é determinado que o parâmetro que a função anônima recebe vem dos elementos do array 'trs'?

Obrigado! Caio.

2 respostas

Oi Caio,

Todo código Javascript é interpretado sequencialmente quando é carregado na página. Como você está fazendo a chamada da função percorreArray, ela será executada.

A função anônima sabe que os elementos vem do array trs por conta da implementação da função percorreArray. O código pode ser encontrado na Aula 05 - Atividade 12:

function percorreArray(trsPacientes, comportamento) {

    for(var posicaoAtual = 0; posicaoAtual <= trsPacientes.length - 1; posicaoAtual++){

        var pacienteTrAtual = trsPacientes[posicaoAtual];
        comportamento(pacienteTrAtual);//função é executada
    }
}

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!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software