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}`
- 2 回答
- 0 关注
- 988 浏览
添加回答
举报
0/150
提交
取消