--- title: 'TypeError: atribuição inválida para const "x"' slug: Web/JavaScript/Reference/Errors/Invalid_const_assignment tags: - Erro - JavaScript - TypeError translation_of: Web/JavaScript/Reference/Errors/Invalid_const_assignment --- <div>{{jsSidebar("Errors")}}</div> <h2 id="Mensagem">Mensagem</h2> <pre class="syntaxbox">TypeError: invalid assignment to const "x" (Firefox) TypeError: Assignment to constant variable. (Chrome) TypeError: Assignment to const (Edge) TypeError: Redeclaration of const 'x' (IE) </pre> <h2 id="Tipo_de_erro">Tipo de erro</h2> <p>{{jsxref("TypeError")}}</p> <h2 id="O_que_deu_errado">O que deu errado?</h2> <p>Uma constante é um valor que não pode ser alterado pelo programa durante a execução normal. Ele não pode mudar através de reatribuição e não pode ser redeclarado. Em JavaScript, as constantes são declaradas usando a palavra-chave <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/const">const</a></code>.</p> <h2 id="Exemplos">Exemplos</h2> <h3 id="Redeclaração_inválida">Redeclaração inválida</h3> <p>Atribuir um valor ao mesmo nome de constante no mesmo escopo de bloco lançará o erro.</p> <pre class="brush: js example-bad">const COLUNAS = 80; // ... COLUNAS = 120; // TypeError: invalid assignment to const `COLUNAS'</pre> <h3 id="Corrigindo_o_erro">Corrigindo o erro</h3> <p>Existem várias opções para corrigir esse erro. Verifique o que se pretendia alcançar com a constante em questão.</p> <h4 id="Renomear">Renomear</h4> <p>Se você quis declarar outra constante, escolha outro nome e renomeie. Esse nome de constante já está sendo usado nesse escopo.</p> <pre class="brush: js example-good">const COLUNAS = 80; const COLUNAS_LARGAS = 120;</pre> <h4 id="const_let_ou_var"><code>const</code>, <code>let</code> ou <code>var</code>?</h4> <p>Não use const se você não quis declarar uma constante. Talvez você quisesse declarar uma variável com escopo de bloco com <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/let">let</a></code> ou uma variável global com <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/var">var</a></code>.</p> <pre class="brush: js example-good">let colunas = 80; // ... let colunas = 120; </pre> <h4 id="Escopo">Escopo</h4> <p>Verifique se você está no escopo correto. Essa constante deve aparecer nesse escopo ou deveria aparecer em uma função, por exemplo?</p> <pre class="brush: js example-good">const COLUNAS = 80; function configurarAmbienteTelaGrande() { const COLUNAS = 120; }</pre> <h3 id="const_e_imutabilidade"><code>const</code> e imutabilidade</h3> <p>A declaração <code>const</code> cria uma referência somente leitura para um valor. Isso <strong>não significa</strong> que o valor que ela contém é imutável, apenas que o identificador da variável não pode ser reatribuído. Por exemplo, caso o conteúdo seja um objeto, isso significa que o objeto em si ainda pode ser alterado. Isso significa que você não pode alterar o valor armazenado em uma variável:</p> <pre class="brush: js example-bad">const obj = {foo: 'bar'}; obj = {foo: 'baz'}; // TypeError: invalid assignment to const `obj' </pre> <p>Mas você pode alterar as propriedades em uma variável:</p> <pre class="brush: js example-good">obj.foo = 'baz'; obj; // Object { foo: "baz" }</pre> <h2 id="Veja_também">Veja também</h2> <ul> <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/const">const</a></code></li> <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/let">let</a></code></li> <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/var">var</a></code></li> </ul>