Const do JavaScript

ECMAScript 2015

ES2015 introduziu duas palavras-chave novas importantes do JavaScript:let e const.

Pelo const definidas let As variáveis definidas são semelhantes às

Exemplo

const PI = 3.141592653589793;
PI = 3.14;      // Dá erro
PI = PI + 10;   // Também dará erro

Experimente você mesmo

de escopo de bloco

emde escopo de blocousada const A variável declarada é semelhante a let As variáveis são semelhantes.

Neste exemplo, x é declarado dentro do bloco, diferente de x declarado fora do bloco:

Exemplo

var x = 10;
// Aqui, x é 10
{ 
  const x = 6;
  // Aqui, x é 6
}
// Aqui, x é 10

Experimente você mesmo

Você pode ver no capítulo anterior Let do JavaScript Aprendi mais sobre o escopo de bloco na escola secundária.

ao atribuir valores na declaração

JavaScript const As variáveis devem ser atribuídas valores no momento da declaração:

Incorreto

const PI;
PI = 3.14159265359;

Correto

const PI = 3.14159265359;

Não é um constante verdadeiro

Palavra-chave const Tem um certo engano.

Ele não define um valor constante. Ele define uma referência constante ao valor.

Portanto, não podemos alterar o valor original da constante, mas podemos alterar as propriedades do objeto constante.

Valor original

Se atribuirmos um valor original a uma constante, não podemos alterar o valor original:

Exemplo

const PI = 3.141592653589793;
PI = 3.14;      // Dá erro
PI = PI + 10;   // Também dará erro

Experimente você mesmo

O objeto constante pode ser alterado

Você pode alterar as propriedades do objeto constante:

Exemplo

// Você pode criar objetos const:
const car = {type:"porsche", model:"911", color:"Black"};
// Você pode alterar as propriedades:
car.color = "White";
// Você pode adicionar atributos:
car.owner = "Bill";

Experimente você mesmo

Mas você não pode reatribuir valor a um objeto constante:

Exemplo

const car = {type:"porsche", model:"911", color:"Black"};
car = {type:"Volvo", model:"XC60", color:"White"};    // ERRO

Experimente você mesmo

Um array constante pode ser alterado

Você pode alterar elementos de um array constante:

Exemplo

// Você pode criar um array constante:
const cars = ["Audi", "BMW", "porsche"];
// Você pode alterar elementos:
cars[0] = "Honda";
// Você pode adicionar elementos:
cars.push("Volvo");

Experimente você mesmo

Mas você não pode reatribuir valor a um array constante:

Exemplo

const cars = ["Audi", "BMW", "porsche"];
cars = ["Honda", "Toyota", "Volvo"];    // ERRO

Experimente você mesmo

suporte do navegador

Internet Explorer 10 ou versões anteriores não suportam const palavra-chave.

A tabela a seguir define as versões dos navegadores que suportam completamente a palavra-chave const:

Chrome 49 IE / Edge 11 Firefox 36 Safari 10 Opera 36
Março de 2016 Outubro de 2013 Fevereiro de 2015 Setembro de 2016 Março de 2016

reatribuição

Em qualquer posição do programa, é permitido redeclarar JavaScript var variável:

Exemplo

var x = 2;    // Permitido
var x = 3;    // Permitido
x = 4;        // Permitido

Não é permitido redeclarar uma variável existente dentro do mesmo escopo ou bloco: var ou let reatribuir valor a const:

Exemplo

var x = 2;         // Permitido
const x = 2;       // Não permitido
{
  let x = 2;     // Permitido
  const x = 2;   // Não permitido
}

Não é permitido redeclarar ou atribuir valor a uma variável const existente dentro do mesmo escopo ou bloco:

Exemplo

const x = 2;       // Permite
const x = 3;       // Não permitido
x = 3;             // Não permitido
var x = 3;         // Não permitido
let x = 3;         // Não permitido
{
  const x = 2;   // Permite
  const x = 3;   // Não permitido
  x = 3;         // Não permitido
  var x = 3;     // Não permitido
  let x = 3;     // Não permitido
}

redeclarar em outro escopo ou bloco const É permitido:

Exemplo

const x = 2;       // Permite
{
  const x = 3;   // Permite
}
{
  const x = 4;   // Permite
}

Promoção

Pelo var As variáveis definidas sãoPromoçãopara o topo. Se você não entender o que é Hoisting, aprenda sobre Hoisting neste capítulo.

Você pode usar a variável var antes da declaração:

Exemplo

carName = "Volvo";    // Você pode usar carName aqui
var carName;

Experimente você mesmo

Pelo const As variáveis definidas não são promovidas para o topo.

const As variáveis não podem ser usadas antes da declaração:

Exemplo

carName = "Volvo";    // Você não pode usar carName aqui
const carName = "Volvo";