CommonJS 模块与 ES6 模块的区别
CommonJS
- 对基本数据类型,属于复制。在另一个模块中可以对该模块输出的变量重新赋值
- 对引用类型,属于浅拷贝。对模块导出的变量的值修改时,会影响到其他引用的模块。
- require 加载模块时,会运行这个模块代码。
- require 加载同一模块时,不会执行该模块,会取缓存中的值,CommonJs 模块只会在第一次加载时运行一次,重复加载时,返回第一次运行的结果
ES6 模块
- ES6 导出的值,属于动态只读引用
- import 的变量是只读属性的,不论基本类型或引用类型。
- 因为是动态只读,原始值发生变化,import 加载的值也会发生变化,不论基本或引用类型