Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

erros.forEach

Olá,

Na função abaixo, eu não consegui entender como a função anonima do forEach capta o paramentro (erro), de onde chega essa informação.

function exibeMensagensDeErro(erros) { var ul = document.querySelector("#mensagens-erro"); ul.innerHTML = "";

erros.forEach(function(erro) {
    var li = document.createElement("li");
    li.textContent = erro;
    ul.appendChild(li);
});

}

4 respostas
solução!

Olá, Rodrigo, tudo bem?

Essa é uma ótima pergunta, e que também tive quando conheci essa função!

A resposta é que, no javascript, algumas das funções nativas da linguagem já vêm com algumas configurações padrões. No caso da função forEach, ela espera receber como parâmetro uma outra função, que chamamos de callback . De forma geral, chamamos de callback as funções passadas como parâmetro de outra função, nesse nosso caso a callback é a função anônima.

E essa função callback também já foi configurada para receber um parâmetro! Parece meio doido, mas é possível fazer isso. Esse parâmetro será exatamente o elemento atual que estamos iterando dentro do forEach. Ou seja, analisando o seguinte código:

erros.forEach(function(erro) {
    var li = document.createElement("li");
    li.textContent = erro;
    ul.appendChild(li);
});

Nós temos o array erros, e vamos iterar nele usando a função forEach. Criamos uma função anônima para ser utilizada como callback e, por padrão, ela pode receber um parâmetro, que aqui escolhemos chamar de erro. Então a cada iteração que fazemos no array erros, o elemento atual será tratado como a variável erro.

Você pode ler mais detalhes sobre a função forEach na documentação. Inclusive, lá aparece a sintaxe de uso:

arr.forEach(callback(currentValue [, index [, array]])[, thisArg]);

Onde arr é o array que vamos percorrer, callback é a função que passamos como parâmetro do forEach, e currentValue é o elemento atual de iteração, que passamos como parâmetro da função callback. Note que ainda existem alguns parâmetros opcionais, deixo como exercício você dar uma olhada ;)

Espero ter ajudado! Se tiver mais dúvidas, não hesite em nos chamar. Bons estudos! :)

Oi Antônio, entendi, o (erro) recebe o valor da iteração com o array. Eu me confundi porque achava que o parametro tinha que ser disponibilizado antes do início da iteração, mas agora o funcionamento está mais claro. Foi muito boa sua explicação.

Obrigado!

Olá, Rodrigo, fico feliz de ter esclarecido sua dúvida! Caso alguém consiga tirar a dúvida do seu tópico, você pode marcar aquela resposta como solução, assim outros alunos e alunas que têm a mesma dúvida que você podem ver o tópico solucionado e encontrar a resposta mais facilmente.

Abraços!

Ah entendi. Eu acabei de usar uma outra função callback, mas nesse caso ela não recebeu um parametro pois apenas imprima uma mensagem. Valeu!

pacientes.forEach(function(paciente) { paciente.addEventListener("dblclick", function() { console.log("Fui clicado em um duplo click"); }); });

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