2
respostas

[Dúvida] Mudança de valor da propriedade com const

Alguem poderia me esclarecer mais sobre isso da mudança de valor do const dentro de uma chave.

No momento, eu estou com o meu racicionio seguindo a seguinte lógica: "A chave teve seu valor trocado por causa que ele está dentro de uma variação de objeto e com isso, objeto por ter propriedades pode ser alterado. O caso de não alteração seria se quisessemos adicionar coisas a partir de outro objeto/função."

A explicação estaria correta?

2 respostas

Essa é uma dúvida interessante, eu não tenho a resposta, mas tenho algumas noções que ajudam a complementar.

Tanto objetos quanto arrays são 'endereçados', o que é salvo numa const é o endereço deles na memoria, é um conceito até meio 'estranho' pra mim a questão de endereço e memoria, isso é bem mais visto em outras linguagens então acho que não importa muito em JS, mas seguindo... o endereço salvo na const é 'constante', mas não o array nem o objeto.

Quando você define um objeto const obj = {} e depois você declara obj2 = obj não se cria um objeto novo, ambos apontam para o mesmo local, o mesmo endereço na memória e é isso que a 'const' salva.

Isso não é uma resposta 100%, eu nem sei se estou certo em tudo, é mais um complemento na ideia, também vou ficar de olho pra ter uma resposta mais definitiva :)

O Thaissa. Acredito que sua linha de raciocínio está certa. Segue a maneira que eu entendo:

Uma variável constante, declarada como const, tem atribuído a ela um valor no momento da declaração. Esse valor pode ser um número, uma string, um objeto, um array, etc. Por ser constante, você não pode atribuir um novo valor a ela. Ou seja:

const nome = "Thaissa";
nome = "outro nome"; // vai dar erro, pois você está ATRIBUINDO à constante "nome" um novo valor

const lista = ["Thaissa", "Bianca"];
lista = ["Matheus", "Samuel"]; // também dará erro pelo mesmo motivo

const pessoa = {nome: "Thaissa", area: "Front End"}
pessoa = {nome: "Matheus", area: "Front End"} // erro novamente

No caso de arrays e objetos, que são estruturas complexas, você pode alterar o conteúdo dentro deles (dentro do colchetes em arrays e dentro das chaves em objetos). Então você não está atribuindo algo à constante em si, mas sim acessando esta constante e dentro dela alterando um valor.

Usando os exemplos anteriores de array e objeto:

const lista = ["Thaissa", "Bianca"];
lista = ["Matheus", "Samuel"]; // ERRO, tentativa de nova atribuição à lista
lista[0] = "Matheus"; // OK, acessou posição 0 dentro de lista e alterou o valor
lista[1] = "Samuel"; // OK, acessou posição 1 dentro de lista e alterou o valor
lista; // ["Matheus", "Samuel"]

const pessoa = {nome: "Thaissa", area: "Front End"}
pessoa = {nome: "Matheus", area: "Front End"} // ERRO, tentativa de nova atribuição à pessoa
pessoa.nome = "Matheus"; // OK, acessou a PROPRIEDADE nome e dentro dela alterou o valor
pessoa; // {nome: "Matheus", area: "Front End"}

Espero que te ajude dessa forma. Bons estudos!