Variáveis declaradas com CONST não podem ter seu valor alterado correto? Objetos declarados com CONST podem ter os valores de seus atributos alterados e até receber novos atributos durante seu ciclo de vida, correto? Isso não é uma contradição?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Variáveis declaradas com CONST não podem ter seu valor alterado correto? Objetos declarados com CONST podem ter os valores de seus atributos alterados e até receber novos atributos durante seu ciclo de vida, correto? Isso não é uma contradição?
Oi, Mauricio! Como vai?
Variáveis declaradas com const realmente não podem ser reatribuídas, ou seja, não podemos trocar o valor delas diretamente. No entanto, para objetos declarados com const, podemos modificar os atributos internos (propriedades) sem reatribuir o objeto inteiro. Isso acontece porque o JavaScript permite modificar o conteúdo interno de objetos e arrays mesmo quando são declarados com const, mas impede que reatribuamos uma nova referência a eles. Por exemplo:
const carro = { marca: 'Toyota', ano: 2022 };
// Alterando o valor do atributo 'ano'
carro.ano = 2023;
console.log(carro);
No código acima, não mudamos a referência de carro. Apenas alteramos uma de suas propriedades internas. Se tentássemos fazer uma nova atribuição direta a carro, o JavaScript mostraria um erro:
const carro = { marca: 'Toyota', ano: 2022 };
// Tentar reatribuir um novo objeto para 'carro' vai gerar erro
carro = { marca: 'Honda', ano: 2024 };
A explicação para isso é que o JavaScript usa a referência original de um objeto criado com const e permite ajustes nos atributos sem alterar a referência em si. Isso não é uma contradição, mas apenas uma característica da linguagem.
Espero ter ajudado. Conte com o apoio do Fórum na sua jornada! Fico à disposição :)
Abraços e bons estudos!
Oi Rafaela, obrigado pelos esclarecimentos. É uma característica particular de uma linguagem apaixonante de fato!