3
respostas

Dúvida com parâmetros

Bom Dia!

Estou com um pouco de dificuldade em entender a questão de parâmetros, quando os mesmos não são declarados. No caso da aula com o Reduce, o JS entende que o parâmetro nota se refere às constantes de notas como? É um processo interno?

Quando declaramos uma variável e depois a usamos, eu consegui entender, mas sem declarar alguns elementos eu ainda fico na dúvida como de fato ele funciona.

3 respostas

Explicando um pouco sobre parâmetro em função. Por exemplo, eu tenho uma função de soma que recebe dois parâmetros.

function soma(numero1, numero2) {
    return numero1 + numero2
}

Então quando você for executar essa função. Ela esperar esse receber esse dois números.

soma(10, 15)

Ele substitui os dois parâmetros por 10 e 15. Então retorna a soma dos dois números. Result: 25

Então, não vi o código que você está se referindo. Mas se eu tenho uma constante, eu posso usar ela na hora da execução da função.

const n1 = 10
const n2 = 15

soma(n1, n2)

Qualquer coisa mostra o código e eu tento ajudar melhor.

Vou te mostrar dois exemplo que talvez possa lhe ajudar.

function fazerVitamina(igrediente1, igrediente2, igrediente3){
  return `Igredientes da sua vitamina: ${igrediente1}, ${igrediente2} e ${igrediente3}.`
}

console.log(fazerVitamina("Banana", "leite", "maça"))

// Igredientes da sua vitamina: Banana, leite e maça.
function fazerVitamina(igrediente1, igrediente2, igrediente3){
  console.log(`Igredientes da sua vitamina: ${igrediente1}, ${igrediente2} e ${igrediente3}.`)
}

fazerVitamina("banana", "leite", "água")

// Igredientes da sua vitamina: banana, leite e água.

Oi, Queren, tudo bem?

Respondendo a sua pergunta: sim, é um processo interno. Métodos como forEach, map, filter e reduce possuem uma lógica interna para determinar os valores dos parâmetros declarados na função callback.

Vou dar um exemplo de código do vídeo sobre forEach:

const notas = [10, 6.5, 8, 7.5];

let somaDasNotas = 0;

notas.forEach(function (nota) {
  somaDasNotas += nota;
});

No código acima, nós declaramos uma função anônima, que está sendo utilizada como função callback do método forEach. Nós apenas declaramos essa função anônima, que espera receber um parâmetro nota. Note que em nenhuma parte do código nós executamos essa função explicitamente (e nem haveria como, já que ela nem possui um nome).

Isso revela que, na verdade, a lógica interna do método forEach irá executar a função callback pra gente. Você pode imaginar que, na implementação interna do forEach, há uma estrutura for que executa a função callback que passamos. E, no momento de cada execução, é passado o valor de uma das notas do array para o parâmetro nota.

Isso reforça mais uma vez a terminologia "função callback", que significa uma função que é "chamada de volta". Nesse caso, a função callback passada para o forEach é chamada de volta para ser executada para cada um dos elementos do array.

A mesma lógica é aplicada para o método reduce. Por exemplo, no código abaixo:

  const notasDaSala = [6, 5, 8, 9, 5, 6];

  const somaDasNotas = notasDaSala.reduce((acumulador, nota) => {
     return acumulador + nota;
    }, 0);

O processo é semelhante: passamos uma função callback para o método reduce, e ele se encarregará de executar essa função para cada item do array, passando os valores corretos para os parâmetros acumulador e nota em cada execução.

Espero ter ajudado! Abraços e bons estudos :)