CommonJS模块输出的是一个值的复制,ES6模块输出的是值得引用。
CommonJS模块是运行时加载,ES6模块是编译时输出接口。
第二个差异是因为CommonJS加载的是一个对象(即module.export属性),该对象只有在脚本运行结束时才会生成。而ES6模块不是对象,它的对外接口是一种静态定义,在代码静态解析阶段就会生成。
CommonJS模块输出的是值的复制,也就是说,一旦输出一个值,模块内部的变化就影响不到这个值。
//module.js
var num=1;
function add(){
num++;
}
module.exports={
num:num;
add:add;
};
//main.js
var mod=require('./module'