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

Minha opinião

setInterval(atualizaTela(‎), 10) --> (‎)

1 resposta
solução!

Olá Ediferrer72 tudo bem com você??

Correto! Parabéns!

Conforme resposta do instrutor no questionamento:

O problema no código de Herculano está nessa linha:

 setInterval(atualizaTela(), 10);
Lembre-se mais uma vez que a função setInterval que já vem pronta no JavaScript precisa receber dois parâmetros para funcionar. O primeiro é a função que ela deve chamar e o segundo o intervalo de tempo no qual a função deve ser chamada.

Veja que não foi passada a função como parâmetro, mas o retorno dela. Como assim Flávio? Se você fizer atualizaTela() esta chamando uma função, certo? Mas a função atualizaTela retorna alguma coisa? Ela possui algum return? Não! Sendo assim, para que fique mais claro ainda o motivo disso não funcionar, vamos dividir o código em duas etapas:

var retorno = atualizaTela();
setInterval(retorno, 10);
O código acima faz sentido? Não faz, porque atualizaTela não possui retorno, sendo assim, a variável retorno será undefined e será esse valor passado para o setInterval. Faz sentido setInterval chamar a cada 10 milissegundos algo que é undefined? Não mesmo!

Outro ponto é que queremos que o JavaScript através do setInterval chame a função para nós e não faz sentido nós mesmos chamarmos atualizaTela().

Então, para corrigir, basta fazermos:

// veja que não há mais o ()
 setInterval(atualizaTela, 10);
A pergunta que lhe faço é. Se não estamos usando o () estamos chamando a função? Não, não estamos. O que fizemos foi passar a função inteira como parâmetro para setInterval que internamente a chamará para nós. Quando queremos passar uma função como parâmetro para outra, precisamos omitir seu ().

Espero ter ajudado!