为什么import循环加载模块的变量显示undefined而不是not defined?

阮一峰教程:http://es6.ruanyifeng.com/#do...

// a.mjs

import {bar} from './b';
console.log('a.mjs');
console.log(bar);
export let foo = 'foo';
// b.mjs

import {foo} from './a';
console.log('b.mjs');
console.log(foo);
export let bar = 'bar';

上面代码中,a.mjs加载b.mjs,b.mjs又加载a.mjs,构成循环加载。执行a.mjs,结果如下。

$ node --experimental-modules a.mjs
b.mjs
ReferenceError: foo is not defined

以上是教程内容。

我在浏览器环境下实测是undefined,let不是没有变量声明提升吗?为什么会是undefined而不是not defined?我自己有两个猜测,但是都不太肯定,恳请指教一下

阅读 3.5k
2 个回答

跟变量提升没有关系,ES6是动态引用,Node环境下的用的 CommonJS规范。

推荐问题
宣传栏