1
resposta

NÃO ENTENDI!!

Não consegui entender o pq dessa resposta (aula 2, tópico 7)Resposta questão da aula 2, JavaScript: tipos, variáveis e funções

1 resposta

Olá, Davi! Tudo bem?

Acho que a confusão está em entender como o código se apresenta por completo. Vamos lá!

O código apresenta as variáveis declaradas com o mesmo nome no escopo geral e em um escopo de bloco.

Note também que temos as declarações com var , let e const

Em seguida, temos um console.log para imprimir o valor das variáveis dentro do bloco e fora dele.

Tudo isso foi pensado para você compreender sobre reatribuição de valores e como algumas variáveis são acessíveis dentro ou fora de bloco.

var respostaDeTudo = 42
let idade = 29
const pi = 3.14

{
    var respostaDeTudo = 3.14
    let idade = 42
    const pi = 29
    console.log(respostaDeTudo, idade, pi)

}

console.log(respostaDeTudo, idade, pi)

No caso, agora conseguimos entender que variáveis que variáveis var e let podem ter seus valores reatribuídos. No entanto, a variável declarada com let = idade só vai ser reatribuída se você chamar apenas o seu nome no escopo de bloco. Você pode realizar o seguinte teste:

  1. Insira um console.log() antes do bloco
  2. Chame a variável idade apenas pelo nome no escopo de bloco
  3. Insira o console.log dentro do bloco e após o bloco
var respostaDeTudo = 42
let idade = 29
const pi = 3.14

console.log(respostaDeTudo, idade, pi) // Saída 42 29 3.14

{
    var respostaDeTudo = 3.14
    idade = 42
    const pi = 29
    console.log(respostaDeTudo, idade, pi)// Saída3.14 42 29

}

console.log(respostaDeTudo, idade, pi)// Saída 3.14 42 3.14

Agora você irá notar que o valor da variável idade foi reatribuído. Mas lembre-se, se você chamá-la como let idade , o javascript entende como outra variável let e reduz sua atuação ao escopo ao qual foi declarada.

Espero ter ajudado, bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software