2
respostas

[Dúvida] verifica e verifica()

Eu não consegui entender o motivo de ter que usar em os ()... alguem pode me ajudar?

2 respostas

Olá! Tudo bem? Quando estava fazendo o curso, achei essa situação estranha também!

Achei em outro tópico uma explicação com exemplos simplificados:

https://cursos.alura.com.br/forum/topico-passagem-de-funcao-com-e-sem-parenteses-45211

Espero que esse link lhe ajude, me ajudou bastante. Agora, eu vou tentar explicar sobre o exemplo da aula (se eu conseguir!)

Pelo que entendi no exemplo, queremos que, quando o usuário clique no botão, a função verifica() seja executada, certo? Porém, para passar a função para button.onclick , precisamos escrever button.onclick = verifica. Pois caso usemos button.onclick = verifica() , nós estaremos dizendo button.onclick é igual ao resultado da função verifica().

Aí que o programa vai executar a função verifica() antes mesmo de colocarmos qualquer valor, na tentativa de trazer o que nós pedimos.

E ele não vai esperar o botão ser clicado para buscar o valor, por isso na aula, só de carregar a página ela já dispara o alerta "Você ERROU!!!!!!!!", porque ele já executou a função com o espaço vazio.

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>
    var segredo = 5;

    var input = document.querySelector("input");

    function verifica() {

        if(input.value == segredo) {

        alert("Você ACERTOU!");
        } else {

        alert("Você ERROU!!!!!!!!");
        }

    }

    var button = document.querySelector("button");

    button.onclick = verifica;

</script>

AAaaa entendii!! mt boa a explicação! obrigadoo