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

Por que não é necessário passar o parâmetro para a função trocaFraseAleatoria?

Durante a aula, na declaração da função trocaFraseAleatoria ela possui um parâmetro (o data).

function trocaFraseAleatoria(data) { var frase = $(".frase"); var numeroAleatorio = Math.floor(Math.random() * data.length); frase.text(data[numeroAleatorio].texto); }

Mas quando ela é chamada dentro do método get esse parâmetro não é informado e mesmo assim ela funciona.

function fraseAleatoria() { $.get("http://localhost:3000/frases", trocaFraseAleatoria); }

O correto não seria o seguinte?

function fraseAleatoria() { $.get("http://localhost:3000/frases", trocaFraseAleatoria(data)); }

Gostaria de entender melhor como isso funciona.

1 resposta
solução!

Oi Guilherme, tudo bem?

Quando você faz desse jeito:

$.get("http://localhost:3000/frases", trocaFraseAleatoria); 

Não é que você não esteja passando o parâmetro, veja, você não colocou os parênteses, então, definitivamente você não está executando a função. O que está acontecendo então?

Bom, o get faz a requisição, mas precisa de uma função pra ser executada quando a resposta chegar, isso é o que chamamos de callback. Uma função pra ser executada depois. Não somos nós que executamos. Neste caso, o jQuery sozinho coisa de executar a chamada depois passando alguns parâmetros pra ela, neste caso, os dados retornados pela requisição.

O outro caso não funciona por que você está executando a função antes mesmo da resposta retornar justamente por causa da presença dos parênteses.

Fez sentido agora?