Resumo : neste tutorial, você aprenderá como definir constantes usando a const
palavra-chave JavaScript.
Introdução à palavra-chave JavaScript const
ES6 fornece uma nova maneira de declarar uma constante usando a const
palavra-chave. A const
palavra-chave cria uma referência somente leitura para um valor.
const CONSTANT_NAME = value;
Linguagem de código: JavaScript ( javascript )
Por convenção, os identificadores constantes estão em letras maiúsculas.
Assim como a palavra-chave let , a const
palavra-chave declara variáveis de escopo bloqueado. No entanto, as variáveis com escopo de bloco declaradas pela palavra-chave const não podem ser reatribuídas .
As variáveis declaradas pela let
palavra-chave são mutáveis. Isso significa que você pode alterar seus valores a qualquer momento, conforme mostrado no exemplo a seguir:
let a = 10;
a = 20;
a = a + 5;
console.log(a); // 25
Linguagem de código: JavaScript ( javascript )
Porém, as variáveis criadas pela const
palavra-chave são “imutáveis”. Em outras palavras, você não pode reatribuí-los a valores diferentes.
Se você tentar reatribuir uma variável declarada pela const
palavra-chave, obterá algo TypeError
assim:
const RATE = 0.1;
RATE = 0.2; // TypeError
Linguagem de código: JavaScript ( javascript )
Ao contrário da palavra-chave let, você precisa inicializar o valor para a variável declarada pela palavra-chave const.
O exemplo a seguir causa um SyntaxError
erro devido à falta do inicializador na const
declaração da variável:
const RED; // SyntaxError
Linguagem de código: JavaScript ( javascript )
Const JavaScript e objetos
A const
palavra-chave garante que a variável que ela cria seja somente leitura. No entanto, isso não significa que o valor real ao qual a const
variável faz referência seja imutável. Por exemplo:
const person = { age: 20 };
person.age = 30; // OK
console.log(person.age); // 30
Linguagem de código: JavaScript ( javascript )
Mesmo que a person
variável seja uma constante, você pode alterar o valor de sua propriedade.
No entanto, você não pode reatribuir um valor diferente à person
constante assim:
person = { age: 40 }; // TypeError
Linguagem de código: JavaScript ( javascript )
Se você quiser que o valor do person
objeto seja imutável, você deve congelá-lo usando o Object.freeze()
método:
const person = Object.freeze({age: 20});
person.age = 30; // TypeError
Linguagem de código: JavaScript ( javascript )
Observe que Object.freeze()
é superficial, o que significa que pode congelar as propriedades do objeto, não os objetos referenciados pelas propriedades.
Por exemplo, o company
objeto é constante e congelado.
const company = Object.freeze({
name: 'ABC corp',
address: {
street: 'North 1st street',
city: 'San Jose',
state: 'CA',
zipcode: 95134
}
});
Linguagem de código: JavaScript ( javascript )
Mas o company.address
objeto não é imutável, você pode adicionar uma nova propriedade ao company.address
objeto da seguinte forma:
company.address.country = 'USA'; // OK
Linguagem de código: JavaScript ( javascript )
Const JavaScript e matrizes
Considere o seguinte exemplo:
const colors = ['red'];
colors.push('green');
console.log(colors); // ["red", "green"]
colors.pop();
colors.pop();
console.log(colors); // []
colors = []; // TypeError
Linguagem de código: JavaScript ( javascript )
Neste exemplo, declaramos um array colors
que possui um elemento usando a const
palavra-chave. Então, podemos alterar os elementos do array adicionando a green
cor. No entanto, não podemos reatribuir o array colors
para outro array.
JavaScript const
em for
loop
ES6 fornece uma nova construção chamada for...of
que permite criar um loop iterando sobre objetos iteráveis, como arrays , mapas e conjuntos .
let scores = [75, 80, 95];
for (let score of scores) {
console.log(score);
}
Linguagem de código: JavaScript ( javascript )
Se você não pretende modificar a score
variável dentro do loop, você pode usar a const
palavra-chave:
let scores = [75, 80, 95];
for (const score of scores) {
console.log(score);
}
Linguagem de código: JavaScript ( javascript )
Neste exemplo, for...of
cria uma nova ligação para a const
palavra-chave em cada iteração do loop. Em outras palavras, uma nova score
constante é criada a cada iteração.
Observe que o const
não funcionará em um loop for imperativo . Tentar usar a const
palavra-chave para declarar uma variável no for
loop imperativo resultará em TypeError
:
for (const i = 0; i < scores.length; i++) { // TypeError
console.log(scores[i]);
}
Linguagem de código: JavaScript ( javascript )
A razão é que a declaração é avaliada apenas uma vez antes do início do corpo do loop.
Resumo
- A
const
palavra-chave cria uma referência somente leitura para um valor. A referência somente leitura não pode ser reatribuída, mas o valor pode ser alterado. - As variáveis declaradas pela palavra-chave const têm escopo bloqueado e não podem ser declaradas novamente.