Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Passar função com parâmetros para ser parâmetro de outra função

Minha dúvida é referente a aula 4 do curso "Javascript e HTML: pratique lógica com desenhos, animações e um jogo".

No 5º tópico temos a explicação de como fazemos para passar funções como parâmetros para outras funções...

Fica a questão, seria possível passar uma função com parâmetros para ser parâmetro de outra função? Por exemplo:

setInterval(atualizaTela(1, 2, 'green') , 10);

1 resposta
solução!

Olá, Lorenzo! Tudo bom contigo?

Antes de tudo, agradeço a paciência em aguardar uma resposta!

Uma função que é passada como parâmetro de outra função denomina-se callback. Um exemplo desse tipo de função ocorre no código estudado na aula 4:

setInterval(atualizaTela, 10);

atualizaTela é uma função callback, já que é parâmetro da função setInterval().

No entanto, notou que atualizaTela está sem parênteses e não possui parâmetros? Isso ocorre devido à natureza assíncrona de uma função callback. A palavra assíncrono faz referência a algo que não ocorre instantaneamente.

Enquanto alguns comandos em Javascript ocorrem de maneira linear, outros, por sua vez, não. As callbacks só serão executadas em cenários específicos, isto é, quando a nossa função realmente determinar isso. Portanto, callbacks garantem que uma função não seja executada antes que uma outra tarefa seja concluída, mas somente depois de algo ser finalizado.

Por esse motivo, não é possível passar como parâmetro uma função que já possui parâmetros, uma vez que, desta maneira, perderíamos o sentido do código assíncrono (quando chamamos uma função com seus parênteses, desejamos que ela seja executada naquele mesmo instante).

Exemplificando:

<script>

  function mostraSaudacao(nome) {
    alert('Olá ' + nome);
  }

  function processarResposta(callback) {
    var nome = prompt('Por favor, insira seu nome.');
    callback(nome);
  }

  processarResposta(mostraSaudacao);

</script>

No código acima, passamos a função mostraSaudacao como parâmetro de processarResposta() . mostraSaudacao somente é executada após o usuário digitar alguma coisa e esse valor será atribuído à var nome.

Caso fosse passado algo como parâmetro de mostraSaudacao, essa função seria executada antes de tudo, inclusive da função processarResposta().


Caso tenha dúvidas acerca da minha resposta ou ao decorrer dos seus estudos na plataforma, lembre-se que pode enviá-las ao fórum. Ficarei super feliz em te ajudar no que for preciso!

Abraços, Lorenzo!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado! ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software