【发布时间】:2019-09-17 04:27:48
【问题描述】:
假设我有以下代码:
//myjs.js
let testingVisibility = "hello";
<script type = "module" src = "myjs.js"></script>
当我想在 Firefox 中通过控制台访问testingVisibility 变量时,testingVisibility 变量没有被声明。
【问题讨论】:
-
如果你
export它,它应该可用。 -
@Derek 我明白了。所以就是这样。
script type = "module"中的所有变量和函数都不可用,除非导出并导入到另一个特定脚本,对吗?而且由于导入脚本还必须附加type = "module",所以我永远无法通过我的控制台访问所述变量吗? -
你也可以把它导出到全局空间,比如
window.testingVisibility = testingVisibility,这样就有点像全局了。 -
每个模块都有自己的作用域。
-
@FelixKling 我明白了!所以基本上,一个模块有点创建自己的类似函数的范围,这意味着
var和let声明的任何变量都不能在所述模块之外访问。这些变量通常无法在所述类似函数的范围之外访问(如果我们谈论的是函数,获取它们的值的唯一方法就是返回它们)。但是,使用模块,我们可以通过使用导出和导入轻松地提供对其他模块的可访问性(类似函数的范围)。谢谢你的回答。
标签: javascript html object ecmascript-6 module