Const de Matriz JavaScript
ECMAScript 2015 (ES6)
em 2015, o JavaScript introduziu uma nova palavra-chave importante: const
.
Tornou-se uma prática comum declarar arrays usando const
:
Exemplo
const cars = ["Saab", "Volvo", "BMW"];
Não pode ser reatribuído
Um array declarado com const
não pode ser reatribuído:
Exemplo
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
Arrays não são constantes
A palavra-chave const
é um pouco enganosa.
Ele NÃO define uma matriz constante. Ele define uma referência constante para uma matriz.
Por causa disso, ainda podemos alterar os elementos de uma matriz constante.
Elementos podem ser reatribuídos
Você pode alterar os elementos de uma matriz constante:
Exemplo
// You can create a constant array:
const cars = ["Saab", "Volvo", "BMW"];
// You can change an element:
cars[0] = "Toyota";
// You can add an element:
cars.push("Audi");
Suporte ao navegador
A const
palavra-chave não tem suporte no Internet Explorer 10 ou anterior.
A tabela a seguir define as primeiras versões do navegador com suporte total para a const
palavra-chave:
Chrome 49 | IE 11 / Edge | Firefox 36 | Safari 10 | Opera 36 |
Mar, 2016 | Oct, 2013 | Feb, 2015 | Sep, 2016 | Mar, 2016 |
Atribuído quando declarado
As variáveis JavaScript const
devem receber um valor quando são declaradas:
Significado: Um array declarado com const
deve ser inicializado quando for declarado.
Usar const
sem inicializar o array é um erro de sintaxe:
Exemplo
Isso não funcionará:
const cars;
cars = ["Saab", "Volvo", "BMW"];
Arrays declarados com var
podem ser inicializados a qualquer momento.
Você pode até usar o array antes de ser declarado:
Exemplo
Isso está bem:
cars = ["Saab", "Volvo", "BMW"];
var cars;
Escopo do Bloco Const
Um array declarado com const
tem Block Scope .
Um array declarado em um bloco não é o mesmo que um array declarado fora do bloco:
Exemplo
const cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{
const cars = ["Toyota", "Volvo", "BMW"];
// Here cars[0] is "Toyota"
}
// Here cars[0] is "Saab"
Um array declarado com var
não tem escopo de bloco:
Exemplo
var cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{
var cars = ["Toyota", "Volvo", "BMW"];
// Here cars[0] is "Toyota"
}
// Here cars[0] is "Toyota"
Você pode aprender mais sobre Block Scope no capítulo: JavaScript Scope .
Redeclarando matrizes
Redeclarar um array declarado com var
é permitido em qualquer lugar de um programa:
Exemplo
var cars = ["Volvo", "BMW"]; // Allowed
var cars = ["Toyota", "BMW"]; // Allowed
cars = ["Volvo", "Saab"]; // Allowed
Redeclarar ou reatribuir um array para const
, no mesmo escopo ou no mesmo bloco, não é permitido:
Exemplo
var cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
{
var cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
}
Redeclarar ou reatribuir um const
array existente, no mesmo escopo ou no mesmo bloco, não é permitido:
Exemplo
const cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
var cars = ["Volvo", "BMW"]; // Not allowed
cars = ["Volvo", "BMW"]; // Not allowed
{
const cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
var cars = ["Volvo", "BMW"]; // Not allowed
cars = ["Volvo", "BMW"]; // Not allowed
}
Redeclarar um array com const
, em outro escopo ou em outro bloco é permitido:
Exemplo
const cars = ["Volvo", "BMW"]; // Allowed
{
const cars = ["Volvo", "BMW"]; // Allowed
}
{
const cars = ["Volvo", "BMW"]; // Allowed
}
Referência de matriz completa
Para uma referência completa do Array, acesse nosso:
Referência Completa de Matriz JavaScript .
A referência contém descrições e exemplos de todas as propriedades e métodos de Array.