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! :)