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

Alteração de conteúdo da query no console antes da atribuição

No final da aula, ao editar o html com o script

<script>
    var titulo = document.querySelector("h1");
    console.log(titulo);
    console.log(titulo.textContent);

    titulo.textContent = "Banana";
</script>

Ao carregar o arquivo, imprime no console:

   <h1>Banana</h1>
Aparecida Nutrição

Porem me estranha o console.log(titulo) imprimir no console a query alterada quando a atribuição é feita depois do comando de log. Qual seria a explicação para que console.log(titulo) imprima o conteúdo alterado e console.log(titulo.textContent) imprima o conteúdo original?

1 resposta
solução!

Fala ai Renato, tudo bem? Vamos lá:

Porem me estranha o console.log(titulo) imprimir no console a query alterada quando a atribuição é feita depois do comando de log. Qual seria a explicação para que console.log(titulo) imprima o conteúdo alterado e console.log(titulo.textContent) imprima o conteúdo original?

No caso, os códigos JavaScript são executados linha por linha, nesse caso, ele vai fazer algo assim:

  1. Cria uma variável chamada titulo
  2. Execute a função querySelector
  3. Referencia o resultado da função querySelector para a variavel titulo
  4. Chame a função log da variável titulo
  5. Chame a função log da propriedade textContent
  6. Altere a propriedade textContent para Banana

Porém, a variável titulo é apenas uma referência para o objeto DOM do h1, por ser uma referência e a mudança ter sido tão rápida, ele primeira atualiza o DOM e depois loga a referência para o DOM.

Se por um acaso você agendar a atualização do DOM para poucos milisegundos:

setTimeout(() => {
    titulo.textContent = "Banana";
}, 100)

Vai ver que o log é feito primeiro que a atualização da página.

Por debaixo dos panos aconteceu muita coisa e é bem mais complexo do que isso, estou apenas tentando simplificar.

Espero ter ajudado.