編集:質問を読んでください!私はすでに違いを知っています。これは重複ではありません。
明らかに、var
はすべてでサポートされているわけではないので、今は常にlet
キーワードを使用する必要があります。
Letキーワードのサポートが優れている場合(たとえば、Harmonyを使用するNodeアプリケーションを数年後に作成しています)、let
キーワードとvs var
キーワード?
私は違いを理解しています—var
は関数スコープ用であり、let
はブロックスコープ用です—しかし、「常にlet
キーワードを使用する」または「use関数の先頭にvar
キーワードがありますが、forループのようなブロック内のletキーワード」。
原則として、不都合がなければlet
を使うべきだと思います。といった:
for (let i = 0; i < 100; i++) {
// Do something
}
if (condition) {
let msg = a + b + c;
console.log(msg);
alert(msg);
}
このアプローチの利点は次のとおりです。
letを使用を一般的なルールとして使用し、場合によってはvarを使用します。
ブロックスコープは標準で最も読みやすい選択肢であり、デバッグを容易にします。ブロックスコープを使用すると、変数のスコープ内の正確な場所を簡単に確認できます。関数のスコープ指定は、物事をはるかに目立たなくし、スコープ指定の間違いを含むバグを誤って導入しやすくします。
一般に、使用できるスコープが小さいほど優れています。したがって、let
はvar
を超えます。
特に、変数をクローズするという無限の問題に対処し、クロージャーが実行される前に変数の値が変化することを認識しないようにします。
for (var i = 1; i <= 5; i++) {
var item = document.createElement("LI");
item.appendChild(document.createTextNode("Item " + i));
let j = i;
item.onclick = function (ev) {
alert("Item " + j + " is clicked.");
};
list.appendChild(item);
}