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