Olá Fatima, boa tarde!
No JavaScript existem três formas de declarar variaveis. Vamos tentar entender as diferenças entre elas.
1 - var: Escopo de Função: Variáveis declaradas com var têm escopo de função. Isso significa que elas são visíveis em todo o corpo da função onde foram declaradas.
Hoisting: As declarações de var são movidas para o topo do escopo em que estão, antes mesmo da execução do código.
Reatribuição: Podemos reatribuir valores a uma variável var após a sua declaração. Exemplo:
function exemploVar() {
if (true) {
var x = 10;
}
console.log(x); // 10 (mesmo fora do bloco if)
}
2 - let: Escopo de Bloco: Variáveis declaradas com let têm escopo de bloco. Elas são visíveis apenas dentro do bloco onde foram declaradas.
Hoisting: Assim como var, let também é hoisted, mas não é inicializado até a declaração.
Reatribuição: Podemos reatribuir valores a uma variável let, mas não podemos redeclará-la no mesmo escopo. Exemplo:
function exemploLet() {
if (true) {
let y = 20;
}
console.log(y); // Erro: y não está definido aqui
}
3 - const: Escopo de Bloco: Assim como let, const também tem escopo de bloco.
Valor Imutável: Uma vez atribuído, o valor de uma variável const não pode ser alterado. Exemplo:
function exemploConst() {
const z = 30;
// z = 40; // Erro: Não é possível reatribuir z
console.log(z); // 30
}
Em resumo:
Use var se precisar de escopo de função ou quiser aproveitar o hoisting. Use let para variáveis mutáveis com escopo de bloco. Use const para valores imutáveis com escopo de bloco.
na pratica var é bem pouco utilizado.