Node 深究module.exports与exports的区别

在这里插入图片描述

一、首先我们举一个类似的例子,了解一下:

在这里插入图片描述
如果这样还不能理解,没有关系,我们可以看下一个例子,再理解一下:

1、代码部分:

var a = 10;
var b = a;
console.log(a);
console.log(b);

在这里插入图片描述
2、接下来,我们添加如下代码,再执行一下:

a++;

在这里插入图片描述
因为我们都是基本数据类型,所以值,都是 “一对一” 进行存储的,改变其中一个值,和其他没有关系。

3、那么接下来,我们看一下引用数据类型

var obj = new Object();
obj.name = '孙悟空';
var obj2 = obj;
console.log(obj.name);
console.log(obj2.name);

在这里插入图片描述
4、接下来,我们添加如下代码,再执行一下:

obj2.name = '猪八戒';

在这里插入图片描述
因为我们是引用数据类型,所有我们变量对应的值,是一个路径,而不是一个具体的值。而该路径对应的值,就保存在堆内存中。我们先创建的 obj 对象,包括我们后创建的 obj2(让其等于 obj 对象),其实这两个对象,它们对应的路径都是相同的。

5、接下来,我们让obj2 = null;,查看图示,如下:
在这里插入图片描述
我们可以看到,断开 obj2,之前对应的路径,和 obj,没有关系

为什么会这样呢?那是因为之前我们设置obj2.name = '猪八戒';,相当于是在改对象(更改 obj 对应对象的 name 属性),它会影响到 obj 的值;而我们现在obj2 = null;相当于是在改变量,所以对 obj 没有影响。

同理,我们exports.name = '孙悟空'exports = { name : '孙悟空' }的异同,也是如此!

二、区别总结

究其本质,就是:exports = module.exports

通过 exports 只能使用.的方式来向外暴露内部变量,即:exports.xxx = xxx;

而我们的 module.exports 既可以通过.的形式,也可以直接赋值。即:module.exports.xxx = xxx;或者module.exports = {}

至此,module.exports 与 exports 的区别就讲解完了。如果还有什么不懂,请查看,上篇博客:Node 浅谈module.exports与exports的区别,感谢您的阅读与支持!

发布了161 篇原创文章 · 获赞 71 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_44034384/article/details/99543774
今日推荐