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

Função com ou sem () ?

Durante a realização da atividade, uma hora eu coloquei a função filtrarLivros com os () e o código não deu certo, depois percebi o meu erro, coloquei tirei os () e o código funcionou bem. Eu sei que tem uma diferença entre coloca uma função com () ou colocar sem, mas eu nunca entendi direito. Poderia me explicar qual seria a diferença entre:

buttons.forEach(btn => btn.addEventListener('click', filtrarLivros))

e

buttons.forEach(btn => btn.addEventListener('click', filtrarLivros()))

?

Muito obrigada desde já!

1 resposta
solução!

Olá, Thaynara!

Ótima pergunta! A diferença entre colocar uma função com () e sem () é bem importante de entender.

Quando você coloca os parênteses após o nome da função, como em filtrarLivros(), você está chamando a função imediatamente. Ou seja, ela será executada no momento em que o código for lido.

Por outro lado, quando você passa apenas o nome da função, como em filtrarLivros, você está passando a referência da função para o evento click. Isso significa que a função será executada somente quando o evento click ocorrer.

No seu exemplo, se você usar filtrarLivros() com os parênteses, a função será chamada imediatamente e o retorno dela será passado para o evento click. Porém, se você usar filtrarLivros sem os parênteses, a função será executada somente quando o evento click ocorrer.

Vamos supor que a função filtrarLivros retorne um valor. Se você usar filtrarLivros() com os parênteses, o retorno dessa função será passado para o evento click. Por outro lado, se você usar filtrarLivros sem os parênteses, a própria função será passada para o evento click, sem executá-la imediatamente.

Portanto, no seu caso, se você quer que a função filtrarLivros seja executada apenas quando ocorrer o evento click, você deve passar apenas o nome da função, sem os parênteses.

Espero ter ajudado e bons estudos!