Eu não consegui entender o motivo de ter que usar em os ()... alguem pode me ajudar?
Eu não consegui entender o motivo de ter que usar em os ()... alguem pode me ajudar?
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