up:: JavaScript and TypeScript
source:: letとvarの違い - Qiita

let(ES6から)はブロックレベル、varは関数レベルで動作する。

function f() {
  let x \= 1;
  console.log(x);
  {
    let x \= 2;
    console.log(x);
  }
  console.log(x);
}
f()
// 1
// 2
// 1
function f() {
  var x \= 1;
  console.log(x);
  {
    var x \= 2;
    console.log(x);
  }
  console.log(x);
}
f()
// 1
// 2
// 2