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

Entender melhor a Const

Conforme as definicões passadas, o elemento CONST nãom pode ter seu valor alterado ou atualizado no futuro, diferente do LET que pode. Mas não entendi o motivo da const do seguinte códido mudar para cada declaração.

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)

O valor da const pi mudou de 29 para 3.14. Não era para isso ocorrer...

5 respostas

Bom dia!

Um ponto importante que precisa se atentar: existem duas declarações da variável 'pi'

A atenção está aqui:

const pi = 3.14;
console.log(pi) //3.14
const pi = 3.15;
console.log(pi) //3.15

Você, aqui, não usa a variável, mas está recriando ela. Para impedir a mutação de valor, precisa usar a variável, não declarar uma nova:

const pi = 3.14;
console.log(pi) //3.14
pi = 3.15; (erro: Assignment to constant variable.)
console.log(pi) //3.14

Bons estudos!

Olá thiago, mas rodando o seu primeiro código, também dá erro

const pi = 3.14;
console.log(pi) //3.14
const pi = 3.15;
console.log(pi) //3.15

O segundo console log não dá 3.15 (como vc descreveu ali em cima) . Ele diz que a a const pi já foi declarada.

Bom dia.

Essa foi a situação que avaliei:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Na verdade não é que o valor mudou, isso ocorre pq existem 2 'variáveis' pi em escopos diferentes.

Basicamente o que tá acontecendo é que quando vc coloca um código dentro de chaves vc tá declarando um bloco de código, esse bloco de código terá seu próprio escopo permitindo que vc declare uma nova const pi dentro dele e ela existirá apenas dentro desse bloco. Assim, dentro do bloco vc tem uma pi = 29 e fora do bloco vc terá outra pi = 3.14

Pra ver isso, se vc excluir a declaração const pi = 3.14, seu código vai dar erro no último console.log() indicando que pi não foi definida, pq nesse caso pi só foi definida dentro do bloco, e assim ela só existe dentro do escopo desse bloco.

Pra ter uma compreensão melhor vc pode dar uma pesquisada sobre blocos e escopos em JS.

Olá Rodolfo, entendi. O valor da const não foi atualizado, ele só existe com dois dados diferentes para escopos diferentes, obrigado pela ajuda, pessoal!!!