Const JS

A const palavra-chave foi introduzida em ES6 (2015).

Variáveis definidas com const não podem ser redeclaradas.

Variáveis definidas com const não podem ser reatribuídas.

As variáveis definidas com const têm Bloco de Escopo.

Não pode ser reatribuído

Uma const variável não pode ser reatribuída:

Exemplo:


    const PI = 3.141592653589793;
    PI = 3.14;      // This will give an error
    PI = PI + 10;   // This will also give an error
    

Deve ser atribuído

As const variáveis JavaScript devem receber um valor ao serem declaradas:

Correto


    const PI = 3.14159265359;
    

Incorreto


    const PI;
    PI = 3.14159265359;
    

Quando usar JavaScript const?

Como regra geral, sempre declare uma variável com, a const menos que você saiba que o valor será alterado.

Use const ao declarar:

• Um novo Array

• Um novo objeto

• Uma nova função

• Um novo RegExp

Objetos e matrizes const antes

A palavra const- chave é um pouco enganosa.

Não define um valor constante. Ele define uma referência constante a um valor.

Por causa disso, você NÃO pode:

• Reatribuir um valor constante

• Reatribuir uma matriz constante

• Reatribuir um objeto constante

Mas você pode:

• Altere os elementos da matriz constante

• Altere as propriedades do objeto constante

Matrizes constantes

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");
    

Mas você NÃO pode reatribuir a matriz:

Exemplo:


    const cars = ["Saab", "Volvo", "BMW"];

    cars = ["Toyota", "Volvo", "Audi"];    // ERROR
    

Objetos Constantes

Você pode alterar as propriedades de um objeto constante:

Exemplo:


    // You can create a const object:
    const car = {type:"Fiat", model:"500", color:"white"};

    // You can change a property:
    car.color = "red";

    // You can add a property:
    car.owner = "Johnson";
    

Mas você NÃO pode reatribuir o objeto:

Exemplo:


    const car = {type:"Fiat", model:"500", color:"white"};

    car = {type:"Volvo", model:"EX60", color:"red"};    // ERROR
    

Suporte para navegador

A const palavra-chave não é compatível com o 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

Escopo do Bloco

Declarar uma variável com const é semelhante a let quando se trata de Block Scope.

O x declarado no bloco, neste exemplo, não é o mesmo o x declarado fora do bloco:

Exemplo:


    const x = 10;
    // Here x is 10

    {
    const x = 2;
    // Here x is 2
    }

    // Here x is 10
    

Redeclarando

Redeclarar uma varvariável JavaScript é permitido em qualquer lugar em um programa:

Exemplo:


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

Não é permitido redeclarar um existente var ou let variável para const, no mesmo escopo:

Exemplo:


    var x = 2;     // Allowed
    const x = 2;   // Not allowed

    {
    let x = 2;     // Allowed
    const x = 2;   // Not allowed
    }

    {
    const x = 2;   // Allowed
    const x = 2;   // Not allowed
    }
    

Reatribuir uma const variável existente , no mesmo escopo, não é permitido:

Exemplo:


    const x = 2;     // Allowed
    x = 2;           // Not allowed
    var x = 2;       // Not allowed
    let x = 2;       // Not allowed
    const x = 2;     // Not allowed

    {
      const x = 2;   // Allowed
      x = 2;         // Not allowed
      var x = 2;     // Not allowed
      let x = 2;     // Not allowed
      const x = 2;   // Not allowed
    }
    

Redeclarar uma variável com const, em outro escopo, ou em outro bloco, é permitido:

Exemplo:


    const x = 2;       // Allowed

    {
      const x = 3;   // Allowed
    }

    {
      const x = 4;   // Allowed
    }
    

Const Hoisting

As variáveis definidas com varsão içadas para o topo e podem ser inicializadas a qualquer momento.

Significado: você pode usar a variável antes de ser declarada:

Exemplo:


    carName = "Volvo";
    var carName;
    

Se você quiser aprender mais sobre içamento, estude o capítulo içamento JavaScript.

Variáveis definidas com const também são içadas ao topo, mas não inicializadas.

Significado: Usar uma const variável antes de ser declarada resultará em ReferenceError:

Exemplo:


    alert (carName);
    const carName = "Volvo";