Olá! Tudo bem? Quando estamos falando de funções, nós normalmente passamos parâmetros para ela, através desse parênteses depois de sua declaração. Um parâmetro ou argumento (são sinônimos nesse caso) é uma variável que passamos para a função trabalhar encima. Veja o exemplo:
function imprimeTexto(texto) {
console.log(texto);
}
imprimeTexto("Olá!"); // Aparece Olá no console
Estamos passando a String "Olá" de parâmetro para a função, que simplesmente mostra no console. O que acontece é que a String "Olá" é atribuída a texto que funciona como uma variável que só vai poder ser acessada dentro da função. Outra abordagem é a seguinte:
const texto = "Olá";
function imprimeTexto() {
console.log(texto);
}
imprimeTexto(); // Também aparece Olá no console
Nesse segundo caso o que está acontecendo é que a função está acessando a const de outra parte do código, sem ser por parâmetro. No geral, usar funções desse jeito é uma má prática, pois acaba ficando desorganizado e mais difícil de entender quais variáveis a função precisa para funcionar, já que passando por parâmetro fica mais fácil de ter esse controle. Mas o que será que acontece se tivermos tanto uma variável chamada texto fora da função e também um parâmetro chamado texto?
const texto = "Oi";
function imprimeTexto(texto) {
console.log(texto);
}
imprimeTexto("Olá"); // Também imprime Olá
imprimeTexto(texto); // Imprime Oi, que é o conteúdo da const texto
Como podemos ver, o que foi impresso no console foi Olá, ou seja, as funções vão sempre dar prioridade para seus parâmetros, o que evita conflitos de nome ao longo do código e também facilita na hora de escrever o código, já que não vai ser preciso se preocupar com alguma variável de fora interferindo no resultado. Também podemos ver que é possível passar variáveis como parâmetro, como fizemos na última linha de código, onde o conteúdo da const texto foi passado na função como parâmetro. Espero ter ajudado!