【问题标题】:'var' and 'let' in Typescript 1.5Typescript 1.5 中的“var”和“let”
【发布时间】:2015-11-10 03:16:30
【问题描述】:

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

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

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

【问题讨论】:

  • 我认为这对 Programmers.SE 来说不是一个好问题:这个网站是关于软件开发概念的,但您询问的是特定语言的具体实现细节。如果您对一般编译器如何实现词法范围感兴趣,那么这可能是这里的主题(但可能过于广泛)。由于您本质上是在询问编程工具,因此我投票支持迁移到 Stack Overflow,这似乎更适合此类问题。
  • 我认为这是一个很好的问题。

标签: compilation typescript ecmascript-6 ecmascript-5


【解决方案1】:

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

【讨论】:

  • 你说得对,这可能是挖掘此类内容的最佳方式。同样有趣的是,如果您尝试输入 var i_1,它会自动将 let 放入 i_2。有点整洁。
猜你喜欢
  • 2018-05-14
  • 2016-09-23
  • 1970-01-01
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 2017-11-20
相关资源
最近更新 更多