ProgramaçãoJavascript

Diferença entre const, var e let no JavaScript

Ao trabalhar com JavaScript, você provavelmente já se deparou com três palavras-chave diferentes para declarar variáveis: const, var e let<. Embora todas sejam usadas para declarar variáveis, elas têm diferenças importantes em relação ao escopo e à mutabilidade. Neste post, vamos explorar essas diferenças e entender quando usar cada uma delas.

var

O var era a única forma de declarar variáveis antes do ECMAScript 6 (ES6), que foi lançado em 2015. Embora ainda seja válido, o var possui algumas peculiaridades que podem causar problemas em certas situações. A principal diferença está no escopo.

1
2
3
4
5
6
7
8
function example() {
var x = 10;
if (true) {
var x = 20; // a mesma variável 'x' é usada aqui
console.log(x); // 20
}
console.log(x); // 20
}

No exemplo acima, a variável x é declarada duas vezes, mas o var não respeita o escopo de bloco. Isso significa que a segunda declaração da variável x sobrescreve a primeira, resultando em ambos os console.log() exibindo o valor de 20. Essa falta de escopo de bloco pode levar a erros sutis e dificultar a manutenção do código.

let

O let foi introduzido no ES6 para solucionar o problema de escopo de bloco do var. Com o let, as variáveis são limitadas ao escopo do bloco em que são definidas.

1
2
3
4
5
6
7
8
function example() {
let x = 10;
if (true) {
let x = 20; // uma nova variável 'x' é criada aqui
console.log(x); // 20
}
console.log(x); // 10
}

Nesse caso, o let cria uma nova variável x dentro do bloco if, que tem escopo limitado a esse bloco. O primeiro console.log() exibe 20, enquanto o segundo console.log() exibe 10, já que a variável x fora do bloco if não foi alterada.

const

Ao contrário do var e do let, o const é usado para declarar constantes, ou seja, variáveis cujo valor não pode ser alterado após a sua atribuição inicial. Assim como o let, o const também tem escopo de bloco.

1
2
3
4
5
6
7
8
function example() {
const x = 10;
if (true) {
const x = 20; // uma nova constante 'x' é criada aqui
console.log(x); // 20
}
console.log(x); // 10
}

No exemplo acima, mesmo usando const, podemos redeclarar a constante x dentro do bloco if. No entanto, essa nova constante x só existe dentro do bloco, e o console.log() dentro do bloco exibe 20. Fora do bloco, o console.log() exibe o valor original de 10. Vale ressaltar que, uma vez que uma constante é atribuída, seu valor não pode ser alterado posteriormente.

Conclusão

A diferença entre const, var e let no JavaScript reside principalmente no escopo e na mutabilidade das variáveis. O var possui escopo de função e não respeita o escopo de bloco, o let possui escopo de bloco e permite reatribuição de valores, enquanto o const também possui escopo de bloco, mas não permite reatribuição após a primeira atribuição.

É recomendado utilizar const sempre que possível, pois isso promove a imutabilidade e torna o código mais seguro e legível. Use let quando precisar de uma variável mutável e limitada a um escopo de bloco específico. Evite o uso do var, a menos que você esteja trabalhando com código legado ou situações muito específicas.

Espero que este post tenha esclarecido as diferenças entre const, var e let no JavaScript. Lembre-se de considerar o escopo e a mutabilidade adequados ao escrever seu código e escolha a palavra-chave correta para declarar suas variáveis.