Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
const
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julho de 2015.
Constantes possuem escopo de bloco, semelhantes às variáveis declaradas usando o palavra-chavelet. O valor de uma constante não pode ser alterado por uma atribuição, e ela não pode ser redeclarada.
In this article
Experimente
const number = 42;try { number = 99;} catch (err) { console.log(err); // Expected output: TypeError: invalid assignment to const 'number' // (Note: the exact output may be browser-dependent)}console.log(number);// Expected output: 42Resumo
Adeclaraçãoconst 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]]]];
nameNNome da constante. Pode ser qualqueridentificador válido.
valueNValor atribuido a constante. Pode ser qualquerexpressão válida, incluindo uma função.
Descrição
Esta declaração cria uma constante que pode pertencer tanto ao escopo global (na janela ou objeto) quanto ao local do bloco em que é declarada. Constantes globais não se tornam propriedades do objetowindow, diferente da criação de variáveis comvar.
Toda constante requer um inicializador, ou seja, é preciso especificar um valor para a constante no momento em que ela é declarada (o que faz sentido, uma vez que esse valor não pode ser alterado).
A declaraçãoconst cria uma referência somente leitura a um valor. Issonão significa que esse valor é imutável, apenas que o identificador da variável constante não pode ser alterado. Se o conteúdo do identificador for um objeto, isso significa que o conteúdo do objeto (ex. seus parâmetros) podem ser alterados.
Todas as considerações de"temporal dead zone" se aplicam tanto alet quanto aconst.
Uma constante não pode ter o mesmo nome que uma função ou variável que esteja no mesmo escopo.
Exemplos
O exemplo abaixo demonstra o comportamento de uma constante. Experimente executá-lo no console do seu navegador.
// NOTA: constantes podem ser declaradas em caixa alta ou baixa,// mas uma convenção comum é usar apenas caixa alta// define MY_FAV como uma constante e lhe atribui o valor 7const MY_FAV = 7;// isto falha mas não emite erros no Firefox e Chrome (porém não falha no Safari)MY_FAV = 20;// a variável MY_FAV possui o valor 7console.log("my favorite number is: " + MY_FAV);// tentar redeclarar a constante emite um erro - Uncaught SyntaxError: Identifier 'MY_FAV' has already been declaredconst MY_FAV = 20;// o nome MY_FAV está reservado para a constante acima, logo também irá falharvar MY_FAV = 20;// isso também vai falharlet MY_FAV = 20;// É importante notar a natureza de escopo por blocoif (MY_FAV === 7) { // não tem problema fazer isso, pois cria uma variável de bloco MY_FAV // com escopo local (o nome MY_FAV poderia ser usado com let também) let MY_FAV = 20; // MY_FAV agora é 20 console.log("meu número favorito é " + MY_FAV); // isso retorna um erro, pois tenta registrar a variável no contexto global var MY_FAV = 20;}//MY_FAV ainda é 7console.log("meu número favorito é " + MY_FAV);// const deve ser inicializadaconst FOO; // SyntaxError: missing = in const declaration// const também funciona com objetosconst MY_OBJECT = { key: "value" };// Sobrescrever o objeto também falha (no Firefox e Chrome mas não no Safari) - Uncaught TypeError: Assignment to constant variable.MY_OBJECT = { OTHER_KEY: "value" };// Entretanto, atributos de objetos não estão protegidos,// logo a seguinte instrução é executada sem problemasMY_OBJECT.key = "otherValue"; // Utilize Object.freeze() se quiser tornar um objeto imutável// o mesmo se aplica para arraysconst MY_ARRAY = [];// É possível utilizar push para incluir itens no arrayMY_ARRAY.push("A"); //["A"]// Todavia, atribuir um novo array para a variável gera um erroMY_ARRAY = ["B"];Especificações
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-let-and-const-declarations> |
Compatibilidade com navegadores
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 comconst, 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çãoconst foi implementada no Firefox muito antes deconst aparecer na especificação ECMAScript 6. Forconst ES6 compliance seeErro do Firefox 950547 andErro do Firefox 611388.
- Iniciando com o Gecko 36:
{const a=1};apassa a retornarReferenceErrore não retorna1devido 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").