1
resposta

Por que essa function remove a classe de outras e não dela mesma

Olá! Gostaria de saber por que a estrutura dessa função não exclui a classe dela mesma, e sim a classe dos outros dois botões do projeto:

function alterarContexto (contexto){ botoes.forEach (function(contexto){ contexto.classList.remove ('active') })

Observe que ela recebe o contexto do próprio botão, porém ela é utilizada para que quando clicamos no botão, que é o contexto recebido, a classe seja removida dos outros botões. Tem alguma coisa haver com o elemento forEach? Se a dúvida não estiver bem estruturada, por gentileza, me peçam que esclareça melhor!

1 resposta

Oii Pedro, tudo bem?

A função alterarContexto(contexto) tá recebendo um parâmetro chamado contexto. Porém, dentro dessa função, você está utilizando o método forEach em um array chamado botoes, e para cada botão desse array, você está criando uma nova função anônima que também recebe um parâmetro chamado contexto.

Nesse caso, o contexto dentro da função anônima do forEach é diferente do contexto que você passou para a função alterarContexto(contexto). Isso acontece porque o JavaScript tem o que chamamos de escopo de função, onde cada função tem seu próprio conjunto de variáveis. Então, o contexto dentro do forEach é na verdade cada botão individual do array botoes, e não o contexto que você passou para alterarContexto(contexto).

Por isso, a classe é removida de todos os botões, pois para cada botão do array botoes, a função anônima está removendo a classe 'active', independente se esse botão é o mesmo que foi passado como contexto para a função alterarContexto(contexto).

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software