15

この 2 か月間、私は JavaScript について多くのことを学んできました。何年にもわたって言語を乱用してきましたが、私は今ではその言語をよりよく理解しており、その機能的な性質の利点 を気に入っています。
最近、私はSchemeの学習を始めましたが、それはただの楽しみです。MDN リファレンスを閲覧していると、JS にはブロック スコープがありませんが、Scheme のように、特定のブロックに対してローカルな変数を宣言するために使用できるキーワードがあることに気付きましたlet

for (var i=0;i<someArray.length;i++)
{
    console.log(someArray[i]);
}
console.log(i);//will log someArray's length

一方:

for (let i=0;i<someArray.length;i++)
{
    console.log(someArray[i]);
}
console.log(i);//undefined

だから私が今知りたいのは、なぜletもっと頻繁に使われないのですか? X ブラウザーのサポートと何か関係がありますか? それはあまり知られていないグッズの1 つにすぎませんか?
要するに、varoverを使用する利点はlet何ですか? 注意点は何ですか?

私が知る限り、 の動作はletどちらかといえば一貫性があります (関数本体を除いて、単一のブロックでの二重宣言は を発生させTypeErrorます (ただし、ECMA6 ドラフトではこれを修正します)。
正直に言うと、この機能/キーワードは別として)あまり知られていないので、for ループの使用や、一時変数がより読みやすいコードを作成する場所での使用に対する議論を考えるのに苦労しています。let

4

1 に答える 1

28

はい、ブラウザのサポートに完全に関係しています。現在、Firefox のみが実装しています(ECMAScript のスーパーセットの一部であるため)

しかし、それはES6で登場するので、希望があります...

両方がサポートされていることvarを考えると、多くのメリットがあるとは言えません。マントラは「is the new letになると思いますletvar

于 2012-11-26T15:52:45.420 に答える