关于编译:在Typescript 1.5中使用’var’和’let’

'var' and 'let' in Typescript 1.5

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

但是,当它编译成不支持"let"的ES5javascript时,到底发生了什么?编译器是否创建了一些奇怪的变量,以防止在typescript文件的上下文中使用这些变量?在定义一个函数中的许多"let"变量的情况下会发生什么?是否存在我应该关注的性能影响?

基本上,当typescript将let变量编译为ES5javascript时会发生什么?


找到这些类型问题的答案的最简单方法是在打字练习场中进行尝试。

typescript重命名块范围内的变量。与使用用var定义的正则变量相比,没有性能开销。

此代码:

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

编译到:

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

以下是有关let的更多信息。