Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] declaração e redeclaração

Boa noite Professor, tudo bem ? Na parte do código: "let contador = 0 contador = contador +1"

Por realizar uma redeclaração em "contador" sem especificar o tipo de variável ele acaba perdendo o let e tornando-se um tipo global ?

2 respostas
solução!

Oi, Gustavo

Não vai se tornar um tipo global

Dentro do escopo que a variável do tipo "let" foi criada, ela pode ser reescrita, mas não pode ser redeclarada

Escopo globalEscopo de funçãoEscopo de blocoReescritaRedeclaradaHoisted
varVisível globalmenteVisível dentro da funçãoNão visívelPermitidaPermitidaSim (elevada ao topo do escopo)
letNão visívelVisível dentro da funçãoVisível dentro do blocoPermitidaNão permitidaNão
constNão visívelVisível dentro da funçãoVisível dentro do blocoNão permitidaNão permitidaNão
// exemplo do let

function exemploLet() {
  if (true) {
    let x = 10; // Declaração usando let dentro de um bloco
    console.log(x); // 10 - Acesso dentro do mesmo bloco
  }
  
  console.log(x); // Erro - A variável x não é visível fora do bloco
}

exemploLet();

Olá Luis, tudo bem ? Muito obrigado pela ajuda, para eu entender melhor sobre a questão da visibilidade em bloco usei esse exemplo que eu fiz:

for(let x = 0; 10 >= x; x++){ console.log(x); } console.log(x); // vazio pois foi declarado dentro do For