在Typescript 1.5中'var'和'let'

时间:2015-08-15 20:40:32

标签: compilation typescript ecmascript-6 ecmascript-5

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

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

基本上,当打字稿编译时将变量发送到ES5 javascript会发生什么?

1 个答案:

答案 0 :(得分:19)

查找这类问题答案的最简单方法,可以在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的更多信息。