let新しいvarです。
明らかに唯一の違いは、現在のブロックにスコープされるのvarに対して、現在の関数にletスコープされるということです。この答えにはいくつかの良い例があり ます。
varES6コードで使用する理由がわかりません。与えられた変数のスコープを関数全体にしたい場合でもlet、関数ブロックの先頭に宣言を置くことでそれを行うことができますvar。また、forブロックなどでより細かくスコープを設定する場合は、それも実行できます。
ですから、私の本能は、varES6コードを書くときは完全に使用をやめることです。
私の質問は、これについて間違っていますか?よりvarも望ましい合法的なケースはありますletか?
let関数の最上部にステートメントを配置すると、関数全体にスコープを設定することを意図したのと同じくらい明白だと思います。使用varすると、単に最上部に配置するよりも明確になるとは思わない。
varは後方互換性にあると信じています。それがなかったら、彼らはvar完全に削除するかlet、そもそも導入しなかっvarたでしょう。代わりに、セマンティクスをほぼ間違いなく本来あるべきものに変更しました。
varは私には薄く見え、飛び回る第3の種類の変数を持つことを保証するのに十分ではありません。let関数の最上部に配置するだけで関数全体にスコープを設定できます。これはvar、ブロックに書き込むよりも意図的にはるかに明確です(そのブロックから持ち上げてブロックの外側で使用できるようにするため) -変)彼はlet、関数にスコープを設定すると、「構文ではなく、単に違いを示す位置になります」と警告していますが、それは良いことだと思います。
var。維持するために彼が提示する例varは不自然に思えます-そして、重大なコーディングエラーに基づいています。エラーに遭遇してそのようなエラーを修正せざるを得ない方が、それを回避できる言語関数を使用するよりもずっと良いです!次に、クラッシュを防ぐためにすべてをtry / catchでラップすることをお勧めしますか?そのリンクの残りの部分は良好ですが、その特定の部分にはまったく同意しません。
varこの変数が関数全体にスコープされることを意図していることを意識的な指標として使用することは有用な「自己文書化」規約であるようです。