const

Esta tradução está incompleta. Ajude atraduzir este artigo.

This is a new technology, part of the ECMAScript 2015 (ES6) standard.
This technology's specification has been finalized, but check the compatibility table for usage and implementation status in various browsers.

Resumo

declaração const  cria uma variável cujo o valor é fixo, ou seja, uma constante somente leitura. Isso não significa que o valor é imutável, apenas que a variável constante não pode ser alterada ou retribuída.

Sintaxe

const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]]];
nameN
Nome da constante. Pode ser qualquer identificador válido.
valueN
Valor atribuido a constante. Pode ser qualquer expressão válida.

Descrição

Esta declaração cria uma constante que pode pertencer ao escopo global ou local de uma função. Constantes são block-scoped. O valor de uma constante não pode ser alterado via re-atribuição, e uma constante não pode ser redeclarada. É obrigatório que um valor seja atribuido à constante em sua declaração. Uma constante não deve compartilhar o nome com uma função ou variável em um mesmo escopo.

Exemplos

O exemplo abaixo demonstra o comportamento da constante. Experimente executar no console do seu navegador.

// define my_fav como uma constante e atribui o valor 7
const my_fav = 7;

// isto falha mas não emite erros no Firefox e Chrome (porém não falha no Safari)
my_fav = 20;

// retorna 7
console.log("my favorite number is: " + my_fav);

// tentar redeclarar a constante emite um erro 
const my_fav = 20;

// o nome my_fav está reservado para a constante acima, logo também irá falhar
var my_fav = 20; 

// my_fav ainda é 7
console.log("my favorite number is " + my_fav);

// Atribuir valores a uma variável const é um erro de sintaxe
const a = 1; a = 2;

// const deve ser inicializada
const foo; // SyntaxError: missing = in const declaration

// const também funciona com objetos
const myObject = {"key": "value"};

// Sobrescrever o objeto também falha (no Firefox e Chrome mas não no Safari)
myObject = {"otherKey": "value"};

// Entretando, atributos de objetos não estão protegidos,
// logo a seguinte instrução é executada sem problemas 
myObject.key = "otherValue";

Especificações

Especificação Status Comentário
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Let and Const Declarations' in that specification.
Standard Definição inicial.

Compatibilidade nos navegadores

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support ? 36.0 (maybe earlier) IE11 12.00 (maybe earlier) 5.1.7 (maybe earlier)

Reassignment fails

20 13 (13) IE11 ? ?
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support ? ? ? ? ? ?
Reassignment fails ? ? ? ? ? ?

Observações

Em versões anteriores do Firefox & Chrome e a partir de Safari 5.1.7 e Opera 12.00, se você define uma variável com const, você ainda consegue alterar o valor depois. Este recurso não é suportado no Internet Explorer 6-10, mas está incluído no Internet Explorer 11.

Observações específicas para Firefox

 A declaração const foi implementada no Firefox muito antes de const aparecer na especificação ECMAScript 6. For const ES6 compliance see bug 950547 and bug 611388.

  • Iniciando com o Gecko 36 (Firefox 36 / Thunderbird 36 / SeaMonkey 2.33):
    • {const a=1};a passa a retornar ReferenceError e não retorna 1 devido block-scoping.
    • const a; passa a retornar SyntaxError ("missing = in const declaration"): É necessário incializar a constante.
    • const a = 1; a = 2; passa a retornar SyntaxError ("invalid assignment to const a").

Veja também

Etiquetas do documento e colaboradores

 Colaboradores desta página: Klauswk, GianWinckler, AlanCezarAraujo, angellica.araujo
 Última atualização por: Klauswk,