Como o método forEach() do JavaScript consegue detectar os parâmetros de índice, item e array sem eu passar eles para o método?

Por exemplo, nesse código que eu fiz pra mostrar o índice e o valor presentes naquela posição em cada iteração pelo array:

Como ele detecta que os parâmetros item, index e array se tratam, respectivamente, do valor atual, do índice e do próprio array sem eu nem ter passado esses parâmetros para a função (apenas declarei)?

Uma boa leitura:

Respondendo: Porque ele espera uma função com essa assinatura, ou seja, é assim que é sua implementação e para você utilizar deve ser essa assinatura de parâmetros. Na imagem a sua é anonima mas, você pode declarar uma função comum e utilizar com essa mesma assinatura!

1 curtida

E por que se eu fizer uma função normal com esses três parâmetros, ela não vai detectar do que eles se tratam?

Não entendi a sua pergunta, por melhorar? (porque se você fizer a mesma assinatura é claro que vai detectar)

Acho que ele se refere a uma função function(a, b, c) fora do forEach. Nesse caso acho que a, b e c são Undefined, não?

Então eu não entendi realmente, pode ser, ele poderia exemplificar para melhorar o contexto.