From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../reference/statements/const/index.html | 224 +++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 files/pt-br/web/javascript/reference/statements/const/index.html (limited to 'files/pt-br/web/javascript/reference/statements/const') diff --git a/files/pt-br/web/javascript/reference/statements/const/index.html b/files/pt-br/web/javascript/reference/statements/const/index.html new file mode 100644 index 0000000000..64aa4c2fc6 --- /dev/null +++ b/files/pt-br/web/javascript/reference/statements/const/index.html @@ -0,0 +1,224 @@ +--- +title: const +slug: Web/JavaScript/Reference/Statements/const +tags: + - ECMAScript6 + - ES6 + - JavaScript + - Referencia + - constantes +translation_of: Web/JavaScript/Reference/Statements/const +--- +
{{jsSidebar("Statements")}}
+ +

Constantes possuem escopo de bloco, semelhantes às variáveis declaradas usando o palavra-chave let. O valor de uma constante não pode ser alterado por uma atribuição, e ela não pod ser redeclarada.

+ +
{{EmbedInteractiveExample("pages/js/statement-const.html")}}
+ + + +

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, 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 objeto window, diferente da criação de variáveis com var.

+ +

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ção const cria uma referência somente leitura a um valor. Isso nã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 a let quanto a const.

+ +

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 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;
+
+// a variável MY_FAV possui o valor 7
+console.log("my favorite number is: " + MY_FAV);
+
+// tentar redeclarar a constante emite um erro - Uncaught SyntaxError: Identifier 'MY_FAV' has already been declared
+const MY_FAV = 20;
+
+// o nome MY_FAV está reservado para a constante acima, logo também irá falhar
+var MY_FAV = 20;
+
+// isso também vai falhar
+let MY_FAV = 20;
+
+// É importante notar a natureza de escopo por bloco
+if (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 é 7
+console.log('meu número favorito é ' + MY_FAV);
+
+// const deve ser inicializada
+const FOO; // SyntaxError: missing = in const declaration
+
+// const também funciona com objetos
+const 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 problemas
+MY_OBJECT.key = "otherValue"; // Utilize Object.freeze() se quiser tornar um objeto imutável
+
+// o mesmo se aplica para arrays
+const MY_ARRAY = [];
+// É possível utilizar push para incluir itens no array
+MY_ARRAY.push('A'); //["A"]
+// Todavia, atribuir um novo array para a variável gera um erro
+MY_ARRAY = ['B'];
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-let-and-const-declarations', 'Let and Const Declarations')}}{{Spec2('ES6')}}Nenhuma mudança.
{{SpecName('ESDraft', '#sec-let-and-const-declarations', 'Let and Const Declarations')}}{{Spec2('ESDraft')}}Definição inicial.
+ +

Compatibilidade nos navegadores

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatUnknown}}36.0 (maybe earlier)IE1112.00 (maybe earlier)5.1.7 (maybe earlier)
+

Reassignment fails

+
{{ CompatChrome(20) }}{{ CompatGeckoDesktop(13) }}IE11{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Reassignment fails{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

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)}}.

+ + + +

Veja também

+ + -- cgit v1.2.3-54-g00ecf