Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Por que dessa forma não funciona como deveria?

const robotron = document.querySelector("#robotron")

robotron.addEventListener,("click", dizOi())

function dizOi() {
    console.log('oi')
}

Por que colocando o parâmetro dizOi() com os parênteses não funciona como deveria no addEventListener?

2 respostas
solução!

Olá Laura, tudo bem?

Quando você passa a função com parênteses no addEventListener, você está na verdade executando a função imediatamente, e passando o seu retorno como callback para o evento de clique. Por exemplo:

robotron.addEventListener("click", dizOi());

Nesse caso, a função dizOi() é executada imediatamente, e o que é retornado é passado como callback para o evento click. Como a função dizOi() não retorna nada, o callback do evento click ficará como undefined, ou seja, nada vai acontecer quando você clicar no elemento.

Para que a função dizOi() seja passada corretamente como callback para o evento click, basta passá-la sem os parênteses, como uma referência à função:

robotron.addEventListener("click", dizOi);

Dessa forma, a função dizOi() será chamada apenas quando o evento click ocorrer, e não imediatamente ao definir o listener.

Espero ter ajudado e bons estudos!

Um abraço.

olá! eu percebi que o codigo disponibilizado na aula esta com a virgula entre o " robotron.addEventListener" e ("click", dizOi) como está abaixo, eu apenas copie e colei aqui:

const robotron = document.querySelector("#robotron")

robotron.addEventListener,("click"dizOi)

function dizOi() { console.log('oi') }

e por isso não funcionou.