JavaScript
es6

letとvarの違い

More than 1 year has passed since last update.

一言で言うと、変数のスコープがブロックスコープか関数スコープかの違いです。

letを使った場合、ブロックレベルで変数のスコープが定義されるため、以下の例のように1,2,1と表示されます。

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

varは関数でのスコープのため、以下のように1,2,2と表示されます。

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

ES6からはletが使えるため、今後はvarではなく好んでletが使われるようになるかと思います。

参考
パーフェクトJavaScript |Part2 JavaScript言語仕様 - 6章 関数とクロージャ - 6-4 スコープ - 6-4-3 letとブロックスコープ