Vou colocar um código mais simples para você compreender.
<meta charset="UTF-8">
<script>
function grita() {
return 'Oláaaaa!';
}
console.log(grita);
</script>
O que é exibido no console com console.log(grita)
? Faça um teste no seu navegador, é importante. Será impresso no console o corpo da função. Isso porque, não estamos executando a função, apenas imprimindo a função e a impressão de uma função é sua estrutura, seu conteúdo.
E agora, faça essa modificação:
<meta charset="UTF-8">
<script>
function grita() {
return 'Oláaaaa!';
}
console.log(grita()); // veja que abrir e fechei os parênteses
</script>
Agora, o que sai no console? Vai oláaaaa
. Isso, porque não estamos imprimindo a função, mas o retorno dela. Quando usamos () em uma função é porque queremos invocá-la e ela pode ou não retornar algo.
Então, quando no código você faz:
button.onclick = verifica;
Você esta dizendo que dentro de button.onclick
(entenda o onclick como se fosse uma variável ) você não esta guardando o retorno da função verifica, mas a função, sua estrutura. E nem poderia usar () porque verifica não tem return e o resultado é undefined.
Se agora button.onclick
possui a mesma estrutra de verifica
, quando você clicar com o botão no navegador é o navegador, não você, que chamará a função guardada no button.onclick
, ou seja, é o navegador que usará o () para executar a função.
Ficou mais claro porque tem que ser button.onclick = verifica
? E mais do que isso, se você fizesse button.onclick = verifica()
você estaria executando a verificação antes do botão ser clicado, porque estaria chamando a função e não faz sentido, porque você nem daria dado tempo para o usuário digitar o chute dele.
Ficou mais claro agora? O Matheus pediu para fazer um teste apenas, não quer dizer que funcionaria.