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

[Dúvida] Dúvida sobre parâmetros em funções

Bom Dia, estou com algumas dúvidas sobre declarações de funções. Nos cursos, vejo que as vezes declaramos uma variável e depois chamamos ela como parâmetro para a função, até aí ok. Mas o que ainda não consegui entender é porque em algumas funções eu chamo alguns parâmetros que não são variáveis declaradas. Qual a diferença entre eles? Como o JS entende a relação desse parâmetro que chamei na função sem ele ter sido declarado.

Se tiver algum curso aqui na Alura que eu possa aprender sobre isso, me indiquem por favor?

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
3 respostas

Ola Queren,

basicamente quando voce declara uma função, e esta tem parametros, voce esta dizendo para função que voce esta criando uma variavel para se usar dentro dela, onde a mesma ja estara recebendo os valores que esta sendo pasada na chamada daquela função. Exemplo:

/*varialvel "a" recebe o valor 10 e "b" recebe 20*/
let a = 10;
let b = 20;

/*chamo a funçao somar passando "a"e "b" como parametro para a funçao*/
somar(a, b)

/*como escrevemos
    aqui estou dizendo para a funçao criar duas variaveis e receber os valores que foram passados:
    "x" recebe o valor de "a", ou seja "x" é 10 e
    "y" recebe o valor de "b", ou seja "y" é 20
*/
function somar(x, y) {
    return x+y; /*resposta é 30*/
}

ah mas e seu eu colocar o nome dos parametros igual o nome da variavel que estou passando para chamar a funçao? neste caso é como se voce fissese uma copia da quela varialvel, podendo alterar o valor da copia dentro da funçao sem alterar a original. Exemplo:

/*varialvel "a" recebe o valor 10 e "b" recebe 20*/
let a = 10;
let b = 20;

/*chamo a funçao somar passando "a"e "b" como parametro para a funçao*/
somar(a, b)

/*como escrevemos
    aqui estou dizendo para a funçao criar duas variaveis com o mesmo nome e receber os valores que foram passados,
    porem qualquer alteraçao que seja feita dentro da funçao nao ira alterar as variaveis "a" ou "b" que estao fora da funcao
    "a" recebe o valor de "a", ou seja "a" é 10 e
    "b" recebe o valor de "b", ou seja "b" é 20
*/
function somar(a, b) {
    /*se eu disser que "x" recebe outro valor e realizar a soma a resposta sera diferente*/
    a= 50;
    return x+y;   /*resposta é 70*/
}

/*se eu der um console.log de "a" fora da funçao eu terei o valor original
pois o que é alterado na funçao fica na funçao*/
console.log(a); /*resposta é 10*/

espero ter ajudado!

Olá Reinaldo, então, em ambos os exemplos que você me passou, as variáveis foram declaradas antes de executar a função e até mesmo dentro da própria função, você atribuiu um valor à variável a, certo? Vou tentar exemplificar aqui uma das minhas dúvidas:

function somar(a, b){ return a + b; }

Acontece isso às vezes, então eu vejo que não foi declarado nenhum valor pras variáveis, então como a função entende que tem que retornar um certo valor?

Outra coisa, as funções que a gente declara o event também me confunde um pouco, nesses casos o JS entende o que é o event e já consegue interpretar o que tem que fazer?

solução!

Olá Queren, na chamada da funçao tambem é possivel que passe o valor diretamente, sem criar a variavel antes, por exemplo:

/* criando a funçao */
function somar(a, b) {
    return a+b;  
}

/*chamda da funçao, onde eu passo os valores diretamente
onde "a"  sera "10" e "b" sera "20"
retornando o valor de "30"*/
somar(10, 20),

no caso de chamar a funçao sem passar nenhum valor: somar() retornara "NaN" (Not-A-Number) no caso de Javascript

Em relaçao ao "event" é uma palavra reservada onde o javascript interpreta de acordo com o que voce deseja fazer.