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
.
的更多信息
在 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
.