Em JavaScript há uma comportamento chamado hoisting
.
O uso de var
trazia algumas pegadinhas, como por exemplo, declarar a mesma variavel 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 adcionadas: let
e const
Elas vieram para corrigir or problemas de var
e adcionar outros comportamentos, var
passou a ser tratado como depreciado, sendo altamente desencorajado o seu uso.
Basicamente let
subistitui os comportamentos esperados quando se usavavar
, adcionando alguns comportamentos, como a validação caso a mesma variável seja 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, oque nao pode ser feito é a reatribuição da variável.
Em JavaScript tudo são objetos (exeto undefined), com exceção de números e strings (que são imutáveis) todos os objetos são passados como referencia.
Ao usar const
você garante que a váriavel ligada ao obeto 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.