1
resposta

[Dúvida] Exercicio confuso

Oii Tudo bem ???? Poque quando eu fasso assim dá um resultado Insira aqui a descrição dessa imagem para ajudar na acessibilidade e quando eu fasso assim dá outro Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Sandy, tudo bom?

O JavaScript trata variáveis declaradas com var, let e const de maneiras diferentes, principalmente em relação ao escopo em que elas existem.

Na primeira imagem, você tem um bloco de código (delimitado por {}) onde você redeclara respostaDeTudo com var, idade com let e pi com const. A variável respostaDeTudo foi inicialmente declarada fora do bloco com var, o que significa que ela é "içada" (hoisting) e tem escopo de função ou global, não sendo limitada pelo bloco. Isso significa que a redeclaração e atribuição dentro do bloco afetam a variável original. Já idade e pi, declaradas com let e const, respeitam o escopo do bloco e, portanto, as declarações dentro do bloco não afetam as variáveis de fora.

Na segunda imagem, você está usando uma função chamada imprimirNumero. Funções criam seu próprio escopo. Assim, quando você declara respostaDeTudo com var dentro da função, ela é local para essa função e não afeta a variável global com o mesmo nome. O mesmo vale para idade e pi declaradas dentro da função com let e const. Por isso, quando você chama console.log fora da função, as variáveis que são impressas são as globais, não as locais da função.

Então, resumindo:

  • var tem escopo de função ou global e é içada.
  • let e const têm escopo de bloco e não são içadas.
  • Funções criam seu próprio escopo, então variáveis declaradas dentro de uma função não afetam as de fora.

Espero que isso ajude a esclarecer as diferenças que você está vendo nos resultados.

Um abraço e bons estudos.