ES6和CommonJS对循环引用的处理的异同

      es6使用的是import导入模块,export导出模块。导入导出的是值的引用,在真正需要用到这个值才会到这个模块中取值。而commonjs规范使用的是require导入模块和module.exports导出模块。require一开始加载就会形成这个模块的值,即使你修改了该模块的输出,其require的值也不会发生改变,因为他回去取缓存中的输出值。

eg、a先export出false,然后require时执行b,b文件有require了a,因为a先前已经export出了一个false,所以缓存了a的export值,如果这个export在require  b文件后面则会报错。

下面的例子时es6的引入方式,他们在循环引用的时候,会动态去执行模块,如果将下面的引入方式换成commonJs的话则会报错,因为在执行odd中的even时 even尚未export出值,因此缓存中没有对应的值,所以会报错

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容