一 对于基本数据类型和复杂数据类型的使用方式不同;
1 CommonJS
(1)对于基本数据类型,采用复制副本的方式(不影响原值)
(2)对于复杂数据类型,采用对象引用的方式(修改时影响原值)
2 ES6
(1)ES6中,基本/复杂类型都属于“动态只读引用”
只读:不论是基本数据类型还是复杂数据类型,只要import进来的变量,都是只读的;
动态:原模块中的值发生变化,import加载的值 也会发生变化,不论是基本数据类型还是复杂数据类型
(2)原理:
当import引入一个模块时,就会生成一个指向原模块对象的只读引用。脚本真正执行时,再根据这个只读引用,到被加载的那个模块里面去取值。
二 当加载同一个模块时,CommonJS是在首次加载时执行。而ES6会先分析模块依赖关系,才按依赖关系执行。
CommonJS会按引入顺序执行模块里面的内容,且多次被引入模块只执行一次;
ES6会先判断引入的顺序,先执行先被被引入的模块的内容,后执行主模块内容,且相同引入的模块也不再重复执行