Queria compartilhar com vocês o resumo que fiz sobre as diferenças entre var
, let
e const
no JavaScript:
Variáveis declaradas com a palavra-chave var
em JavaScript têm escopo global ou de função. Elas passam pelo processo de hoisting, o que significa que a declaração da variável é movida para o topo do escopo atual, enquanto a atribuição de valor (se houver) permanece no lugar original. Se não for atribuído nenhum valor explicitamente, a variável será automaticamente inicializada com o valor undefined
no momento do hoisting.
A palavra-chave let
em JavaScript é usada para declarar variáveis que têm escopo de bloco. Isso significa que elas são visíveis e acessíveis apenas dentro do bloco em que foram declaradas, geralmente delimitado por chaves {}
. Se você tentar acessar uma variável let
fora do seu escopo, resultará em um erro do tipo 'ReferenceError', indicando que a variável não está definida. Assim como as variáveis var
, as variáveis let
também são inicializadas automaticamente com o valor undefined
se nenhum valor for atribuído a elas dentro do seu escopo.
A palavra-chave const
em JavaScript é usada para declarar constantes que também possuem escopo de bloco. A característica fundamental de uma constante é que, uma vez atribuído um valor a ela, esse valor não pode ser alterado posteriormente. As constantes devem ser inicializadas obrigatoriamente no momento da declaração, ou seja, devem ser atribuídas com um valor no momento da declaração, e são acessíveis somente dentro do bloco em que foram declaradas. No entanto, é importante notar que, em caso de objetos ou arrays, enquanto o valor da constante não pode ser reatribuído, as propriedades ou elementos internos do objeto ou array podem ser modificados.
Quando declaradas fora de funções ou blocos de código, let
, var
e const
adquirem escopo global. No entanto, as variáveis var
têm uma particularidade: são acessíveis por todo o código, inclusive antes de serem declaradas, graças ao processo de hoisting, mas ao fazer isso, possuem um valor inicial de undefined
até que um valor seja atribuído explicitamente. Já as variáveis let
e const
, quando declaradas globalmente, exigem uma declaração explícita antes de serem acessadas. No contexto das constantes const
, após a atribuição inicial, elas mantêm um valor imutável, garantindo que o valor atribuído permaneça constante ao longo do código. Tanto as variáveis declaradas com var
quanto as declaradas com let
recebem automaticamente o valor undefined
se apenas declaradas e não tiverem um valor atribuído explicitamente.
Utilizar const
e let
em vez de var
é mais recomendado, pois proporciona maior clareza, previsibilidade e escopo controlado, evitando comportamentos inesperados e erros no código.