Este artigo necessita de uma revisão editorial. Como posso ajudar.
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
A 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 but 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 retornarReferenceError
e não retorna1
devido block-scoping.const a;
passa a retornarSyntaxError
("missing = in const declaration"
): É necessário incializar a constante.const a = 1; a = 2;
passa a retornarSyntaxError
("invalid assignment to const a").