Allysson Santos

Front-end Developer

Javascript Basics 3 - Variável com Const.

Introdução:

Veremos a palavra-chave const, declaração de variáveis na específição mais recente do EcmaScript (ES6).

Javascript Basics 3 - Variável com Const.
Nível: iniciante

Variável const no JS

Ao pé da letra, estamos atribuindo um valor constante, que nunca vai mudar, ou seja:

1
2
const nome = 'allysson';
nome = 'zézão';
Uncaught TypeError: Assignment to constant variable.

Viu só né? não podemos mudar o valor de uma variável declarada com const.

Só, que, entretudo, todavia, dizem que const é uma variável imutável, ou seja, ela não pode mudar. Só que isso não é verdade, pois, podemos atribuir um objeto à uma variável declarada com const, e podemos manipular as propriedades e valores desse objeto, veja só:

1
2
3
4
5
6
7
8
9
10
11
12
13
const eu = {
  nome: 'Allysson',
  idade: 22
};

console.log(eu);
Object {nome: "Allysson", idade: 22}

eu.nome = 'Outro nome';
eu.idade = 55;

console.log(eu);
Object {nome: "Outro nome", idade: 55}

Como demonstrado, podemos mudar os valores de um objeto declarado com const. No objeto acima, alterei sua propriedade nome e idade para outros valores sem problema algum.

Reescrever o valor da variável declarada com const nós não iremos conseguir, porém, é possivel alterar as propriedades de um objeto declarado com const , ou seja, ele não é um objeto imutável.

Tornando um objeto imutável

Para tornar um objeto imutável, temos que utilizar o Object.freeze(objeto);. Utilizando o mesmo exemplo acima. Para tornar o objeto eu imutável, fariámos da seguinte maneira:

1
2
3
4
5
6
7
8
9
10
const eu = {
  nome: 'Allysson',
  idade: 22
};

Object.freeze(eu);
eu.nome = 'Zezinho';

console.log(eu);
Object {nome: "Allysson", idade: 22}

Como podemos ver na linha 7, eu tentei alterar a propriedade nome do objeto eu, mas como eu 'freezei' meu objeto na linha 6 com o Object.freeze(eu); essa alteração não foi aplicada e também não gerou nenhum erro. Agora sim temos um objeto imutável.

comments powered by Disqus