Почему переменные недоступны в консоли браузера при использовании модулей ES? - PullRequest
0 голосов
/ 14 января 2020

Мне любопытно, почему у меня нет доступа к определенным переменным в консоли браузера, когда мой тип сценария установлен на 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, первый модуль. js:

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

и аналогичная структура переменных в обычном порядке. js:

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

Когда я запускаю это в браузере, я могу получить доступ к переменной, определенной в обычном режиме. js, введя ее непосредственно в консоль, но не из модуля. js. Я надеюсь найти некоторую ясность в этом вопросе. Спасибо!

1 Ответ

3 голосов
/ 14 января 2020

Вы сможете получить доступ к переменным модуля, если вы остановились на точке останова в коде соответствующего модуля, но нет, если нет. Декларации верхнего уровня в модулях не являются глобальными. Каждый модуль получает свою собственную область, вроде как функцию, которую вызывают только один раз (это грубая аналогия), поэтому объявления верхнего уровня являются частными для области действия модуля (если вы не экспортируете их, конечно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...