Рассмотрим следующий пример
data = null
function read_data() {
//read a file and assign data = file content
}
function print() {
console.info(data)
}
Если я вызову read_data, а затем print из другого скрипта, будет ли он напечатан ноль? Или мне следует звонить read_data каждый раз, когда мне нужно его распечатать?
Код в его нынешнем виде не будет работать, поскольку присвоение необъявленному значению приведет к выбросу модуля, но да, глобальный контекст доступен каждому модулю, а изменения в нем доступны другим модулям.
«Глобальный» на самом деле не лучший термин для модуля; больше похоже на «область модуля» или «глобальный модуль», потому что модули защищены друг от друга брандмауэром.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Да, если read_data меняет глобальную переменную data, то другие функции в том же модуле смогут увидеть это изменение. Если вы сначала позвоните read_data, а затем позвоните print, print отобразит обновленное значение data.
Да, поскольку он закрыт по имени данных