【问题标题】:TypeScript var scope versus JavaScript var scopeTypeScript var 范围与 JavaScript var 范围
【发布时间】:2018-12-22 04:57:20
【问题描述】:

在这个非常常见的问题上,文档之间存在一些有趣的差异。

根据 TS 文档,使用 var 声明的变量会从包含函数中泄漏出来,但在 MSDN 上它声明 var 数据不会泄漏,而是可以在整个包含函数中访问。与 ECMAScript 的处理方式相比,这可能只是 Typescript 处理 var 的方式不同,希望 SO 对此提供反馈。

According to the TS docs

块作用域 当一个变量使用 let 声明时,它使用一些 调用词法作用域或块作用域。 不同于用声明的变量 作用域泄漏到其包含函数的变量,块作用域 变量在其最近的包含块之外不可见或 for循环。

But according to the MSDN docs

let 声明的变量的作用域在它们所在的块中 被定义,以及在任何包含的子块中。这样,让 非常像 var。 主要区别在于a的范围 var 变量是整个封闭函数

【问题讨论】:

    标签: javascript typescript var let


    【解决方案1】:

    这是两种不同的表达方式

    医生说(强调我的):

    用 var 声明的变量,其作用域泄漏它们的包含函数

    这与说不同

    用 var 声明的变量,其作用域泄漏出 of 其包含函数

    【讨论】:

    • 你完全正确,错过了那个小细节。当我有能力的时候会接受这个!
    【解决方案2】:

    TypeScript 被转编译为 JavaScript。当您查看从 TypeScript 代码生成的 JavaScript 输出时,您会看到使用关键字 var 声明的变量的声明方式相同。

    所以范围也是一样的:变量在整个包含函数中都是可访问的。这有时称为hoisting

    【讨论】:

    • 吊装是一个相关但不同的概念。
    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    相关资源
    最近更新 更多