为什么使用ES模块时浏览器控制台中的变量不可用?

问题描述 投票:0回答:1

我很好奇为什么当我将脚本类型设置为type="module"时无法在浏览器控制台中访问已定义的变量。]​​>

下面是一个假设的设置:

<!DOCTYPE html>
<html>
<head>
  <div id="containerFirst">...</div>
  <div id="differentContainer">...</div>
</head>

<body>
  ...
</body>
<script type="module" src="module.js"></script>
<script src="normal.js"></script>
</html>

这是两个JS文件,第一个module.js:

export const firstContainer = document.getElementById('containerFirst');

以及normal.js中类似的变量结构:

const otherContainer = document.getElementById('differentContainer');

当我在浏览器中运行此代码时,可以直接在控制台中输入normal.js中定义的变量,但不能从module.js中键入该变量。我希望在这件事上能找到一些清晰的地方。谢谢!

我很好奇为什么我将脚本类型设置为type =“ module”时无法在浏览器控制台中访问已定义的变量。下面是一个假设的设置:<...>

javascript browser console es6-modules
1个回答
3
投票

如果您在相关模块代码中的断点处暂停,则可以访问模块变量,但如果不是,则不能访问。根据设计,模块中的顶级声明不是全局变量。每个模块都有自己的作用域,就像它们是只被调用一次的函数(这是rough

© www.soinside.com 2019 - 2024. All rights reserved.