ES6 / ES2015では、JavaScriptで変数を宣言するために、letconstの2つの新しいキーワードを使用できます。 varとは異なり、letとconstはブロックスコープです。

Var には、ブロックスコープではないという問題があり、これは驚きにつながる可能性があります。

var dog = 'Ralf';

if (true) {
  var dog = 'Skip';
}

console.log(dog); // Skip

これをletの使用と比較してください。

let dog = 'Ralf';

if (true) {
  let dog = 'Skip';
}

console.log(dog); // Ralf

Var は適切に関数スコープされています。つまり、この問題は関数では発生しませんが、ifforのようなブロックでは、すべての賭けがオフになり、変数が宣言されます var を使用すると、親スコープに引き上げられます。

定数

const を使用すると、不変の変数(定数)を定義できます。 定数を再割り当てしようとすると、エラーが発生します。

const PI = 3.1415;

PI = 5; // "TypeError: Assignment to constant variable.

ただし、新しいアイテムは引き続き配列定数にプッシュしたり、オブジェクトに追加したりできることに注意してください。 次の2つのスニペットは、変数に再割り当てしようとしていないため、文句を言わずに機能します。

const someArr = [3, 4, 5];

someArr.push(6);
const someObj = {
  dog: 'Skip',
  cat: 'Caramel',
  bird: 'Jack'
};

someObj.camel = 'Bob';

対Var

現在、多くの開発者は、 var を使用することについてはそれほど強力なケースはなく、letを使用することが前進する方法であることに同意しています。

つまり、 let を使用してください!