Qual a diferença? algo mais didático. obg
var, let e const?
Qual a diferença? algo mais didático. obg
var, let e const?
Olá, Adriano, tudo bom?
Primeiro vou te dizer a diferença entre const
e os outros dois, ok? Bem, a principal diferença é que se declararmos uma variável com const
, você não conseguirá alterar o seu valor, por exemplo:
const fruta = "maçã";
fruta = "banana"; // Uncaught TypeError: Assignment to constant variable.
O código acima imprime um erro. Mas se utilizarmos var
ou let
para declarar a variável fruta
, você poderá alterar seu valor mais tarde no código.
Agora, let
e var
são bem semelhantes, a única diferença entre eles é o "escopo" em que a variável ficará definida. Te darei um exemplo para ficar mais claro.
if(true) {
let nome = "Adriano";
console.log(`Olá, ${nome}!`); // "Olá, Adriano!"
}
console.log(`Olá, ${nome}!`); // Uncaught ReferenceError: nome is not defined
Tentar executar o último console.log
imprime uma mensagem de erro. Isso acontece porque variáveis declaradas com let
ficam "presas" dentro do if
e outras estruturas que ficam entre as chaves {}
, que chamamos de bloco.
Mas e se tentarmos executar o mesmo código, mas usando var
para declarar nome
?
if(true) {
var nome = "Adriano";
console.log(`Olá, ${nome}!`); // "Olá, Adriano!"
}
console.log(`Olá, ${nome}!`); // "Olá, Adriano!"
O código acima funciona! Isso acontece porque variáveis declaradas com var
não se limitam a blocos feitos por if
, for
, switch
, etc.
Entretanto, qualquer variável criada dentro uma função não pode ser acessada fora da função, não importa se foi declarada com const
, let
, ou var
.
Mas aqui vai uma dica: a "liberdade" que var
dá às variáveis pode ser um pouco perigosa e fonte de bugs, então na maioria dos casos o mais recomendado é usar let
para variáveis que você deseja alterar o valor no futuro. E, naturalmente, use const
para variáveis que você não quer que tenha o valor alterado.
Espero ter ajudado! Bons estudos!