1、再讲module.exports 与exports之间的区别的时候我们先来回顾一下js里面的引用传递

   001、引用传递

   var arr = [10,20,30];
var newarr = arr; console.log(arr);//[10,20,30]
console.log(newarr);//[10,20,30]; newarr[0] = 40;
console.log(arr);//[40,20,30];
console.log(newarr);//[40,20,30];
分析:
    第一次定义var arr = [10,20,30]; 我们知道引用数据类型的数据放在堆中,索引放在栈中,索引指向的地址是堆中的地址,而var newarr = arr;是将arr的指向复制了一份给了newarr,因此第一次输出2个的值是一样的。而第二次newarr[0] = 40,因为newarr的指向和arr的指向是相同的,因此newarr[0] = 40,是将地址中的第一个数据发送了改变。而恰好两者的指向是相同的因此arr的数据也发生了改变
 
2、module.exports && exports
其实两者的关系跟上面的关系是一样的。exports是module.exports的一个引用。
    区别:
        1、module.exports默认的初始值是一个空的对象
 
        2、exports是module.exports的一个引用
 
    3、require返回的是module.exports而不是exports
05-17 19:16