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

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

// a.mjsimport {bar} from './b';console.log('a.mjs');console.log(bar);export let foo = 'foo';
// b.mjsimport {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.mjsb.mjs
ReferenceError: foo is not defined

以上是教程内容。

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


喵喔喔
浏览 1313回答 1
1回答

慕沐林林

跟变量提升没有关系,ES6是动态引用,Node环境下的用的 CommonJS规范。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript