Oii Tudo bem ???? Poque quando eu fasso assim dá um resultado e quando eu fasso assim dá outro
Oii Tudo bem ???? Poque quando eu fasso assim dá um resultado e quando eu fasso assim dá outro
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.Espero que isso ajude a esclarecer as diferenças que você está vendo nos resultados.
Um abraço e bons estudos.