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?

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.