Вопросы указаны внизу
Я довольно давно использую Webpack для своих производственных сборок React.
Меня заинтересовали модули ES6, о разделении и исполнении кода.
Итак, я придумал следующий тестовый код, чтобы понять поведение модулей.
Код помещается в папку src. Webpack связывает код, а затем bundle.js запускается с node ./dist/bundle.js в терминале.
Код:
./src/index.js
import node1 from "./node1";
import node2 from "./node2";
function part() {
node1();
node2();
}
part();
./src/node1.js
import test, { x } from "./test";
function node1() {
console.info("node1", x, new Date().getTime());
test();
console.info("node1", x, new Date().getTime());
}
export default node1;
./src/node2.js
import test, { x } from "./test";
function node2() {
console.info("node2", x, new Date().getTime());
test();
console.info("node2", x, new Date().getTime());
}
export default node2;
./src/test.js
let x = 1;
console.info(x, new Date().getTime());
function test() {
console.info(
"This is test for understanding dependency graph",
x++,
new Date().getTime()
);
}
export default test;
export { x };
Результат выполнения
Вопрос: Я ожидаю, что экспортированное значение x останется постоянным. Почему
это не?
Вопрос: Отображается ли поведение во время выполнения из-за связывания webpack или другой неотъемлемой части спецификации import\export модулей ES6?
Итак, я пытаюсь понять поведение, модули определяют объем переменных. Я ожидал, что экспортированное значение x останется постоянным, поскольку test определен в области видимости, он должен иметь доступ к переменной из-за закрытия. Существует огромная вероятность того, что то, что я спрашиваю, совершенно неверно, но я не могу разобраться в импорте и экспорте.
Я ожидаю, что мой экспорт будет статичным



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


x в node1.j является неизменной ссылкой на x в test.js.Подробнее читайте здесь: http://2ality.com/2015/07/es6-module-exports.html
immutable reference как термин объясняет все поведение
Почему вы ожидаете, что
xостанется постоянным, когда функцияtest()явно увеличивает его?