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

Dúvida sobre a alteração de constantes

Para testar a alteração em constantes criei um simples objeto:

const produtos = {
    nome: 'Sabonete',
    preco: 5.99,
    descricao: 'Limpa até 99% dos germes da mão'
}

console.log(produtos)

Depois tentei alterar o valor da chave "preco" para 7.99:

const produtos = {
    nome: 'Sabonete',
    preco: 5.99,
    descricao: 'Limpa até 99% dos germes da mão'
}

console.log(produtos)

produtos.preco = 7.99

console.log(produtos)

E de fato, ao término, foi possível alterar o valor de alguma chave num objeto que deveria ser constante, não permitindo nenhuma mudança. Portanto, eu gostaria de entender o motivo disso acontecer.

2 respostas

Fala Roberto, tudo bem?

O que acontece é que o valor de uma constante não pode ser alterado por uma atribuição, e ela não pode ser redeclarada., como por exemplo:

const produtos = {
    nome: 'Sabonete',
    preco: 5.99,
    descricao: 'Limpa até 99% dos germes da sua mão'
}

console.log(produtos)

produtos = 'Outro valor' 

console.log(produtos)

Alterando dessa maneira dará erro, pois estamos alterando através de atribuição, ou seja, atribuindo um novo valor para a variável.

A declaração const cria uma variável cujo o valor é fixo, ou seja, uma constante somente leitura. Isso não significa que o valor é imutável, apenas que a variável constante não pode ser alterada ou retribuída.

Você pode ver mais sobre na documentação, acessa-a clicando aqui

Espero ter ajudado, bons estudos :D

solução!

Oi Roberto, tudo certo?

Isso acontece porque a variável const não permite uma redeclaração dos valores, nós podemos sim alterar elementos de um array que seja declarado com const, ou alterar os valores de alguma propriedade de um objeto.

Na verdade, isso acontece porque quando utilizamos array/objetos, armazenamos uma referência para esse array/objeto, e não o valor em si. Portanto, quando alteramos alguma propriedade no objeto, como você pontuou, você não está modificando seu valor constante, mas o objeto para o qual ele aponta (por referência). Por isso que é possível alterar objetos/array com constantes! O que não podemos, repetindo, é redeclarar o seu valor.

Você pode ver mais sobre neste tópico do fórum do StackOverflow.

Espero ter ajudado, bons estudos =)