Olá, Gustavo! Tranquilo? =)
Acredito que a principal diferença entre let
e var
é referente à escopo, mas não é a única. Dando uma pesquisada, encontrei uma resposta que possa lhe servir, está no StackOverflow...
Basicamente as diferenças são as seguintes:
1 - Variáveis globais: vamos criar ambas variáveis globais, ou seja, fora de qualquer bloco:
var a = "Variável com var";
let b = "Variável com let";
Ambos são globais, mas somente a declaração com var
atribuirá a variável como atributo do objeto window
.
console.log(window.a); // Variável com var
console.log(window.b); // undefined
2 - Variáveis dentro de uma função: após criá-las dentro de funções, ao invés de globais, elas existirão somente ali dentro, de forma semelhante:
function funçao() {
var a = "Variável com var";
let b = "Variável com let";
}
3 - Variáveis dentro de um bloco: agora vamos criá-las dentro de um bloco for
dentro de uma função...
function funcao() {
for(var a = 0; a < 10; a++) {
// Variável a existe aqui...
}
// Variável a também existe aqui...
}
function funcao2() {
for(let b = 0; b < 10; b++) {
// b existe aqui...
}
// Variável b não existe aqui!
}
Repare na diferença! Ao usarmos var
, a variável passa a existir dentro da função toda, não somente no bloco em que foi criada (for
). Quando usamos let
não, ela só existe dentro do bloco!
E a última diferença, que eu não conhecia... Hehehe!
4 - use strict
: Ao usarmos o strict mode, a redeclaração é possível para var
, mas não para let
:
"use strict";
var a = "Olá"; // Variável a declarada com valor "Olá"...
var a = "Oi"; // Variável a substituída pelo valor "Oi"...
let b = "Hello"; // Variável b declarada com valor "Hello"...
let b = "Hi"; // Deu ruim!
Basicamente essas são as diferenças entre um e outro, além da compatibilidade. =)
Espero ter ajudado, mas qualquer dúvida que ainda possa ter restado não deixe de postar aqui para podermos ajudá-lo! =)
Abraço e bons estudos,
Fábio