Node.js 之学习笔记

这里有一只小白在学习Node.js,相关大神请撤离 :)

module.exports和exports的区别

首先回顾一下Js基础知识:

var a = {"name": "Mark"};
var b = a;

console.log(a);
// Object {name: "Mark"}
console.log(b);
// Object {name: "Mark"}
------------------------
var a = {"name": "Mark"};
var b = a;
b.name = "Merry";
console.log(a);x
// Object {name: "Merry"}
console.log(b);
// Object {name: "Merry"}
------------------------
var a = {"name": "Mark"};
var b = {"name": "Merry"};
b.name = "Job";
console.log(a);
// Object {name: "Mark"}
console.log(b);
// Object {name: "Job"}

这里就涉及到了ES5中的引用类型,b为a的引用,两者指向同一块内存,所以前两种情况到b改变时,a也跟着改变。但b被赋值后,两者并不是指向同一块内存,所以互不影响。

如果你对引用类型的理解没问题的话,那么module.exports 与 exports的区别理解起来就很简单了,如下:

  • module.exports 的初始值为一个空对象 {}
  • exports 是 module.exports 引用
  • require(url) 最后返回的是 module.exports,而不是exports

所以当给exports赋值时,会失效,更多相关姿势请查看这里。

is Updating...

你可能感兴趣的:(Node.js 之学习笔记)