ES6/ES2015を使用したJavaScriptでのLetandConst
ES6 / ES2015では、JavaScriptで変数を宣言するために、letとconstの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 は適切に関数スコープされています。つまり、この問題は関数では発生しませんが、ifやforのようなブロックでは、すべての賭けがオフになり、変数が宣言されます 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 を使用してください!