web-dev-qa-db-ja.com

TypeScript1.5の「var」と「let」

Typescriptで 'var'または 'let'を使用することの違いは正確には何ですか? 'let'を使用すると、変数をスコープ外で使用せずに、スコープ内でさらに定義できることを知っています。これは、forループのイテレータにとって明らかに優れた利点です。これはES6の定義であることがわかっているので、ES6へのコンパイルは「var」と「let」に関してほぼ同じに見えるはずです。

しかし、「let」をサポートしないES5 javascriptにコンパイルすると、正確には何が起こっているのでしょうか。 TypeScriptファイルのコンテキストで上記の変数を使用できないようにコンパイラが作成する奇妙な名前の変数はありますか?関数全体で多くの「let」変数を定義する状況ではどうなりますか?心配すべきパフォーマンスへの影響はありますか?

基本的に、TypeScriptがlet変数をES5 javascriptにコンパイルするとどうなりますか?

17
Zachary Dow

これらのタイプの質問に対する答えを見つけて、 TypeScript Playground で試す最も簡単な方法。

TypeScriptは、ブロックスコープ内の変数の名前を変更します。 varで定義された通常の変数を使用する場合と比較して、パフォーマンスのオーバーヘッドはありません。

このコード:

var i = 0;
for (let i = 0; i < 5; i++) {}
i++;

コンパイル先:

var i = 0;
for (var i_1 = 0; i_1 < 5; i_1++) { }
i++;

ここletに関する詳細情報です。

20
thoughtrepo