【问题标题】:Is there an es6 module-scope equivalent to `window`?是否有等效于“窗口”的 es6 模块范围?
【发布时间】:2023-03-09 13:15:02
【问题描述】:

在 Javascript 中,我们可以在任何时候使用 window 对象添加全局变量:

'use strict';
var a = 1;

function test() {
  window.b = 2;
}

test();
console.log(a); // a
console.log(b); // b

在 ES6 中是否有类似(或不类似!)的方式将变量分配给当前模块范围?

谢谢

【问题讨论】:

标签: javascript scope ecmascript-6


【解决方案1】:

Module environments 由所谓的声明性环境记录组成:

模块环境记录是一个声明性Environment Record,用于表示ECMAScript 模块的外部范围。

相对于全局环境由一个object环境记录组成:

每个对象环境记录都与一个称为其绑定对象的对象相关联。对象环境记录绑定直接对应于其绑定对象的属性名称的字符串标识符名称集。


就像函数环境(它们也是声明性的)一样,无法从另一个作用域访问作用域。

【讨论】:

  • 感谢规范参考!
猜你喜欢
  • 2023-03-20
  • 2021-05-03
  • 1970-01-01
  • 2011-05-05
  • 2015-08-06
  • 2016-04-22
  • 2021-10-28
  • 1970-01-01
相关资源
最近更新 更多