Executando verificação de segurança...
3

Um detalhe sobre o var: nem sempre ele cria a variável no escopo global. Dentro de uma função, o escopo fica restrito àquela função. Exemplo:

function f() {
    var x = 1;
    console.log('dentro da função', x);
}

f(); // imprime "dentro da função 1"

console.log('fora da função', x); // ReferenceError: x is not defined

Note que x não existe fora da função, e dá erro ao tentar acessá-la.


Outro detalhe é que o var permite a "re-declaração", sobrescrevendo o anterior. Já o let cria outra variável para cada escopo:

var x = 1;
let y = 2;
if (x > 0) {
  var x = 3;
  let y = 4;
  console.log(x, y); // 3 4
}

console.log(x, y); // 3 2

Repare que dentro do if, a alteração feita em x também o afetou fora deste bloco. Já o let criou na verdade outra variável (com o mesmo nome y), tendo somente o bloco do if como escopo. Por isso a variável y externa continua inalterada.

Existem outras diferenças e detalhes importantes, ver mais aqui e claro, na documentação (aqui, aqui e aqui).

Carregando publicação patrocinada...
1

Se bem entendi, a quando re-declaro uma var dentro de um bloco de código, ele aloca o valor no mesmo local da memória. Já com let, o valor é alocado é um novo espaço. Vou dar uma lida na documentação, obrigado!