ES6/ES2015を使用したJavaScriptでのLetandConst
提供:Dev Guides
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 を使用してください!