为了账号安全,请及时绑定邮箱和手机立即绑定

node.js中为什么不能输出exports = {a:1}?

node.js中为什么不能输出exports = {a:1}?

蛊毒传说 2018-10-03 17:18:00
node中exports和module.exports都是一个空对象,输出和引入的方式有:方式1:// a.jsmodule.exports = {a:1}// b.jsimport a from 'a.js' 或者 require('a.js')// 输出 {a:1}方式2:// a.jsexports.a = 1// 引用的方式同方式1 输出的值类型也是一样都是一个对象// 但是如下这种方式为何不能输出exports = {a: 1}// 引用结果为 {}exports和module.exports 都是指向一个空对象的,exports = {a: 1}这种方式也是这个空对象赋值,但是输出的为什么还是一个空对象呢?求大佬指点。。
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

Node 对每个 JS 模块都注入了两个变量:

module = { 
 exports: {}
}

exports = module.exports

注意,这两个「exports」虽然名字相同,但含义完全不同,一个是 module 对象的属性,一个是变量,只不过在模块初始化阶段这两个标识符引用了同一个对象。

于是,下面这个情况就好理解了:

module.exports.something = 123

// 此时 `exports.something` 也是 123,因为 `module.exports` 和 `exports` 引用了同一个对象

exports = {something: 456}

// 这样 `exports` 这个变量就被赋值为另一个对象,原来的对象依然被 `module.exports` 引用着

// 此时 `module.exports` 还是 `{something: 123}`


查看完整回答
反对 回复 2018-10-08
  • 2 回答
  • 0 关注
  • 988 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信