3
respostas

[Dúvida] Return

Ainda não entendi muito bem a função de Return

3 respostas

Ola! Também tive essa mesma dúvida nos primeiros contatos que tive com o 'Return'. O return é um comando utilizado em funções para indicar o que exatamente ela deve retornar para você. Pense numa função como um bloco de código ''reservado'' que você pode chamar em diferentes partes da aplicação e que em muitas vezes, uma função realiza várias operações até chegar em um objetivo específico, como calcular o valor de uma média, por exemplo. Ao chamar essa função, aquele bloco de código será executado e deve, muitas vezes, ''retornar'' algum dado, vamos analisar o exemplo da atividade que você estava fazendo. function calcularMedia(nota1, nota2, nota3, nota4) { let media = (nota1 + nota2 + nota3 + nota4) / 4; return media; } Com o return, você ''sinalizou'' para a função exatamente o que ela deve retornar para você, caso você não utilizasse o return, ao chamar essa função, o bloco de código seria executado criando a variável ''media'' dentro do escopo dessa função e calculando o valor da média dessas notas, porém, a função não retornaria nenhum dado pra você, pois quando o return não é sinalizado dentro de uma função, o javascript entente que aquele bloco de código apenas deve ser executado e nenhum valor desse ser ''armazenado'' como retorno. Lembre-se, também, que o return sinaliza o final do bloco de código de uma função e o Javascript não irá executar nenhum código que venha depois do return dentro da função.

Espero que tenha te ajudado um pouco a ficar mais claro a utilidade do return, se ficou alguma dúvida fico a disposição.

Ta, deixa ver se eu entendi. A função return() apenas salva aquilo na memória... caso eu não usasse return()...

eu teria que declarar uma variavel e inserir nele o valor do resultado e depois dar um console.log() nessa variavel?

e como se ela fosse uma abreviação pra todas essas linhas de código?

Acho que ficou um pouco confuso, não é nada disso, vamos lá. Uma função ou function é um bloco de código que você mesmo pode criar, dar o nome que quiser e dentro do escopo dessa função você pode criar a funcionalidade que você quiser. Vamos de exemplos novamente:

//crio a função e dou nome de 'soma' para ela
function soma(n1, n2) {

//crio uma variável chamada resultado atribuo a soma de n1+n2 

let resultado = n1 + n2

//utilizo 'return' para que a função retorne o que estiver armazenado na variável 'resultado'

return resultado
}

console.log(soma(1, 2)) //saída no console será '3'

Vamos analisar detalhe por detalhe:

  • função é criada no início do código e eu escolhi dar o nome de 'soma' pra ela.

  • Criei a variável resultado e atribuí a ela o valor da soma de n1 e n2, as quais serão passadas por parâmetro, posteriormente, quando a função for chamada no código. Lembre-se que simplesmente criar uma função não irá executar o bloco de código que está dentro do escopo dela, é necessário chamá-la posteriormente!

  • posteriormente utilizei o comando 'return' para indicar que eu espero receber o que estiver na variável resultado como retorno da função 'soma' que eu criei.

Agora vamos analisar o comportamento:

  • Caso, nesse código, eu apagar o 'return resultado', a saída no console será 'undefined', pois a função soma não retornará nenhum dado para você, a única coisa que ela vai fazer é somar 1+2 e aquele dado obtido vai ser perdido, visto que funções só retornam algum dado específico se o comando 'return' for utilizado ao final dela.

Refazendo o código incluindo o console.log dentro do escopo da função:

function soma(n1, n2) {
let resultado = n1 + n2
console.log(resultado)
}

soma(1, 2) //saída no console será '3'

Analisando os detalhes:

  • Novamente criei uma função chamada soma, sem utilizar o comando 'return' e incluí o console.log dentro do escopo da função
  • Nesse caso, como dentro da função você sinalizou o console.log, mesmo que a função esteja sem o return, o valor da variável 'resultado' será impresso no console, pois o console.log está sendo executado no momento que a função é chamada e passado os parâmetros dela, mais precisamente quando eu escrevi 'soma(1, 2)'.
  • Como em qualquer função sem o comando 'return', a função soma continua sem retornar nenhum valor pra você, ela simplesmente imprime no console o valor da variável resultado e nada mais que isso.

Resumo: Funções são blocos de código reservados que executam uma finalidade, seja realizar uma soma, multiplicação, seja consultar dados etc, as possibilidades das funções ou functions são infinitas! Se você espera receber um dado específico como retorno de uma função, seja o valor de uma variável etc, você deve utilizar o comando 'return' para sinalizar isso e ser guardado na memória o retorno daquela função, caso você queira apenas executar um bloco de código com alguma finalidade, como imprimir algo direto no console, por exemplo, não é necessário utilizar o return.

Eu sugiro dar uma estudada a mais em funções e ler um pouco sobre o comportamento delas, aos poucos essa ideia de ''retornar valores'' que eu falo constantemente vai fazer mais sentido pra você a medida que for evoluindo. Espero ter sido um pouco mais claro, ainda fico a disposição caso ainda tenha dúvidas.