Typescript 1.5 中的 'var' 和 'let'

'var' and 'let' in Typescript 1.5

在 Typescript 中使用“var”或“let”到底有什么区别?我知道 'let' 允许将变量进一步定义到一个范围内,而无需在所述范围之外使用它。对于 for 循环中的迭代器来说,这显然是一个很好的优势。我知道这是一个 ES6 定义,所以编译成 ES6 应该在 'var' 和 'let' 方面看起来几乎相同。

但是,当它向下编译成不支持 'let' 的 ES5 javascript 时,到底发生了什么?编译器是否创建了奇怪的命名变量,以防止在 Typescript 文件的上下文中使用所述变量?在整个函数中定义许多 'let' 变量的情况下会发生什么?我应该关注性能影响吗?

基本上,typescript 将 let 变量编译为 ES5 时发生了什么 javascript?

找到此类问题答案的最简单方法是在 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++;

Here 是关于 let.

的更多信息