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?
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!