4 respostas

★ Melhor resposta

Galera tá certo sobre `var` ser problema, mas o negócio da imutabilidade com `const` não é bem assim - `const` só congela a referência, não o conteúdo, então você consegue tranquilamente modificar um objeto ou array declarado com `const`. O que realmente diferencia é o escopo: `var` é function-scoped (vaza pra fora de blocos), enquanto `let` e `const` são block-scoped (ficam trancados no escopo onde foram criados). Isso causa bugs reais com `var`, tipo quando você declara dentro de um `if` e a variável aparece do lado de fora. Minha sugestão é usar `const` por padrão, `let` quando realmente precisa reatribuir, e esquecer `var` de vez.

Gustavo73 PT 🔍 Entusiasta 💬 34 respostas

Não uses `var` em código novo, sério. É o jeito antigo e traz problemas com escopo que te dão dor de cabeça depois. A diferença principal é mesmo no escopo: `var` tem escopo de função, enquanto `let` e `const` têm escopo de bloco. Significa que se declaras uma variável com `var` dentro de um `if`, ela fica acessível fora do bloco. Com `let` e `const` isso não acontece, fica presa ali mesmo.

Entre `let` e `const`, a diferença é simples: `let` podes reatribuir o valor, `const` não. Se declaras `const minhaVar = 5`, depois não consegues fazer `minhaVar = 10`. Já com `let` funciona tranquilamente. Parece uma coisa pequena, mas é útil porque evita que mudas uma variável sem intenção. Muita gente prefere usar `const` por defeito e só passa para `let` quando realmente precisa reatribuir.

Na prática, usa `const` sempre que consegues, mete `let` quando precisas mudar o valor, e esquece `var`. É basicamente isso. Ainda encontras código antigo com `var` aos montes, mas para coisa nova não faz sentido 🤷

A diferença de escopo que mencionaram é real, mas o mais prático no dia a dia é mesmo a imutabilidade! Com `const` você garante que a referência não muda, o que evita bugs bestas onde alguém (ou você mesmo depois) acidentalmente reatribui uma variável. `Let` é flexível quando precisa, mas `const` por padrão torna o código muito mais previsível e seguro.

Juliana BR 🔍 Entusiasta 💬 22 respostas

Na prática, o hack que ninguém falou é usar `const` por padrão e só partir pra `let` quando você realmente precisa reatribuir algo - assim você força seu cérebro a pensar melhor sobre o que é mutável e o que não é, e evita aqueles bugs chatos onde você muda uma variável sem perceber. `var` é praticamente obsoleto mesmo, a galera tá certa nisso.

Sua resposta

Entrarpara responder.