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

[Reclamação] Didática

Aos 09:32, o instrutor não pode dizer que vai por .. para repetir o código anterior. Eis o código:

const http = new XMLHttpRequest()

http.open("GET", "http://localhost:3000/profile")

http.send()

http.onload = () => {
  const data = JSON.parse(http.response)
  data.forEach((element) => {
  table.appendChild(createNewLine(element.nome, element.email))
  })
  ...
 }

Daí diz que devemos repetir a operação como block de um callback na constante http. Legal. Mas a pessoa, como eu, não sabe que cazzo está acontecendo, ela porá o seguinte:

http.onload = () => {
  const data = JSON.parse(http.response)
  data.forEach((element) => {
  table.appendChild(createNewLine(element.nome, element.email))
  })

  const http2 = new XMLHttpRequest()
  http2.open("GET", "http://localhost:3000/profile/semanaPassada")

  http2.onload = () => {
    const data = JSON.parse(http2.response)
    data.forEach((element) => {
      table.appendChild(createNewLine(element.nome, element.email))
    })
  } 
}

Mas obivamente não pode usar uma const data duas vezes. Ou pode? Não sei. Se eu soubesse, não estaria fazendo essa aula. Me parece que o código deveria ser

http.onload = () => {
  const data = JSON.parse(http.response)
  data.forEach((element) => {
  table.appendChild(createNewLine(element.nome, element.email))
  })

  const http2 = new XMLHttpRequest()
  http2.open("GET", "http://localhost:3000/profile/semanaPassada")

  http2.onload = () => {
    const data2 = JSON.parse(http2.response)
    data2.forEach((element) => {
      table.appendChild(createNewLine(element.nome, element.email))
    })
  } 
}

Se fosse para redefinir uma variável, usar-se-ia let, não?

1 resposta
solução!

Sim, você está correto. Em JavaScript, uma vez que você declara uma variável usando const, não pode reatribuir um valor diferente a essa variável. No exemplo que você apresentou, a variável data é definida dentro do primeiro callback de http.onload. Se você precisar de outra variável para armazenar os dados retornados do segundo http2.onload, você deve declará-la usando uma nova variável, como você fez com data2.

Quanto à sua pergunta sobre o uso de let, você pode usar let para definir uma variável que pode ter seu valor reatribuído. No entanto, neste caso, você está criando uma nova variável para armazenar os dados do segundo http2.onload, e não reatribuindo o valor da variável data. Portanto, o uso de let não seria necessário aqui.