Em JavaScript há uma comportamento chamado hoisting
.
O uso de var
trazia algumas pegadinhas, como por exemplo, declarar a mesma variável 2x usando var
var abc = 25
// ...
// ...
var abc = 99
Nenhum erro era disparado com isso, e vários efeitos colaterais eram gerados.
Com a versão ES2015
do JavaScript, duas novas keyworks foram adicionadas: let
e const
. Elas vieram para corrigir ou problemas de var
e adicionar outros comportamentos, var
passou a ser tratado como depreciado, sendo altamente desencorajado o seu uso.
Basicamente let
substitui os comportamentos esperados quando se usava var
, adicionando alguns comportamentos, como a validação, caso a mesma variável fosse declarada mais de 1x.
Já const
inicialmente pode enganar os mais desavisados.
Uma variável declarada com const
não pode ter seu valor reatribuido, porém não garante imutabilidade.
Objetos por exemplo, podem ter seus valores modificados, o que não pode ser feito é a reatribuição da variável.
Em JavaScript tudo são objetos (exceto undefined), com exceção de números e strings (que são imutáveis) todos os objetos são passados como referência.
Ao usar const
você garante que a váriavel ligada ao objeto não possa ser reassinada por outro valor
const abc = { x: 1 }
abc.x = 2
abc = { y: 3 } // erro
Atualmente a recomendação é sempre usar const
e evitar let
. Isso deixa o código mais previsivel e menos suscetível a bugs.