compilation - Typescript 1.5 中的 'var' 和 'let'

标签 compilation typescript ecmascript-6 ecmascript-5

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

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

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

最佳答案

找到此类问题答案的最简单方法是在 TypeScript Playground 中尝试一下.

TypeScript 重命名 block 范围内的变量。与使用 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 的更多信息。

关于compilation - Typescript 1.5 中的 'var' 和 'let',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32051173/

相关文章:

javascript - 使用比较符号封装的数据类型初始化对象有什么好处,例如大于和小于?

typescript - AWS Amplify 使用 typescript 添加 API

javascript - 如何在 JavaScript 中以本地 let 方式销毁所有属性

javascript - 如何单独获取对象值并将其插入临时变量 - jsPDF-autoTable

reactjs - 如何仅使用 babel 7 转译 node_modules 文件夹?

compiler-errors - 错误编译内核

scala - Scala本地类型推断下划线表示法

c - 使用不在 System32 中的 DLL

c - .c 扩展名对源文件是强制性的吗?

javascript - 将带有换行符和空格的输入拆分为数字数组,在数组末尾添加额外的 0