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

Mais uma dúvida com o this.

        for(var i = 0; i < lis.length; i++) {
            console.log(lis[i].textContent); // Funciona <-------
            lis[i].addEventListener('click', function() {
                console.log(lis[i].textContent); // Não funciona <-------
        //console.log(this.textContent);
            });
        }

Poderia me dizer por quê?

1 resposta
solução!

Acredito que o lis seria a keyword "this", correto?

Uma resposta resumida seria que o this referencia o objeto referente ao escopo atual. Pode notar que ao chamar a função "addEventListener" você passa uma function como parâmetro. Essa função vai ser executada no callback da função addEventListener, e a mesma é uma propriedade do objeto "this[i]". Ou seja, quando a função que você passou como parâmetro for executada, a mesma vai estar dentro do escopo do objeto "this[i]", então o this escrito dentro desta função que foi passada como parâmetro vai referenciar o objeto this[i]

Aconselho leitura da documentação:

https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Operators/this

Também já tinha explicado mais sobre o this em outra pergunta do fórum, segue o link abaixo:

https://cursos.alura.com.br/forum/topico-notacao-em-javascript-this-54419

Espero ter ajudado :D

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