Qual é a diferença entre declaração de variáveis usando 'let' e 'var'?

A diferença principal entre declarar uma variável usando let e var está na forma como elas são escopadas.

Quando declaramos uma variável usando let, ela é limitada ao escopo do bloco em que foi definida. Isso significa que ela só pode ser acessada dentro desse bloco e não será visível fora dele. Por exemplo:

function exemplo() {
  let x = 5;
  if (true) {
    let y = 10;
    console.log(x); // 5
    console.log(y); // 10
  }
  console.log(x); // 5
  console.log(y); // Erro: y não está definido
}

No exemplo acima, a variável x foi declarada dentro da função, então ela é visível em qualquer lugar dentro dessa função, mas a variável y foi declarada dentro do bloco if, então ela só é visível dentro desse bloco.

Já quando declaramos uma variável usando var, ela tem escopo de função. Isso significa que ela pode ser acessada em qualquer lugar dentro da função, independentemente do bloco em que foi definida. Por exemplo:

function exemplo() {
  var x = 5;
  if (true) {
    var y = 10;
    console.log(x); // 5
    console.log(y); // 10
  }
  console.log(x); // 5
  console.log(y); // 10
}

Nesse caso, tanto a variável x quanto a variável y são visíveis em qualquer lugar dentro da função exemplo.

É importante ressaltar que, a partir do ECMAScript 6, é recomendado o uso de let em vez de var, principalmente para evitar problemas de poluição do escopo global e bugs relacionados à reatribuição acidental de variáveis.