Declaração de Variáveis
Introdução às formas de declarar variáveis em JavaScript: var, let, e const. Explicação das características, escopo, hoisting e melhores práticas de uso para cada uma.
Introdução
Em JavaScript, há três maneiras principais de declarar variáveis: var
, let
, e const
. Cada uma tem suas próprias características e melhores práticas de uso. Vamos explorar cada uma delas em detalhes.
Tipos de Declaração
1. var
var
Características:
Escopo de Função: Variáveis declaradas com
var
têm escopo de função, o que significa que são acessíveis dentro da função onde foram declaradas.Hoisting: Variáveis
var
são elevadas (hoisted) ao topo de seu contexto de execução. No entanto, sua inicialização não é elevada.
Exemplo:
No exemplo acima, a declaração de a
é elevada ao topo da função, mas a inicialização (a = 10
) permanece no local original.
Uso Comum:
Antes do ES6, var
era a única maneira de declarar variáveis. Hoje, é geralmente recomendado evitar var
em favor de let
e const
para evitar problemas de escopo e hoisting.
2. let
let
Características:
Escopo de Bloco: Variáveis declaradas com
let
têm escopo de bloco, o que significa que são acessíveis apenas dentro do bloco{}
onde foram declaradas.Não permite redeclaração: Uma variável declarada com
let
não pode ser redeclarada no mesmo escopo.
Exemplo:
No exemplo acima, a
dentro do bloco if
é uma variável diferente de a
fora do bloco if
.
Uso Comum:
let
é ideal para variáveis que precisam ter seus valores reatribuídos e cujo escopo deve ser limitado ao bloco onde foram declaradas.
3. const
const
Características:
Escopo de Bloco: Como
let
, variáveis declaradas comconst
têm escopo de bloco.Imutável: Uma vez atribuído um valor a uma variável
const
, ele não pode ser reatribuído. No entanto, objetos e arrays declarados comconst
podem ser modificados.
Exemplo:
No exemplo acima, variável a
não pode ser alterada, mas os elementos do array arr
podem ser modificados.
Uso Comum:
const
é ideal para variáveis que não devem ser reatribuídas, como valores constantes ou referências a objetos e arrays que serão modificados internamente.
Comparação e Boas Práticas
Escopo:
var
: Funçãolet
econst
: Bloco
Redeclaração:
var
: Permitidalet
econst
: Não permitida no mesmo escopo
Hoisting:
var
: Declarada e inicializada comoundefined
let
econst
: Declaradas, mas não inicializadas
Mutabilidade:
var
elet
: Pode ser reatribuídoconst
: Não pode ser reatribuído, mas objetos e arrays podem ser modificados
Boas Práticas
Prefira
const
sempre que possível. Uselet
quando souber que a variável precisa ser reatribuída.Evite
var
para evitar problemas de escopo e hoisting.
Atualizado
Isto foi útil?