猿问

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

node中exports和module.exports都是一个空对象,输出和引入的方式有:

方式1:

// a.js

module.exports = {a:1}

// b.js

import a from 'a.js' 或者 require('a.js')

// 输出 {a:1}


方式2:

// a.js

exports.a = 1

// 引用的方式同方式1 输出的值类型也是一样都是一个对象


// 但是如下这种方式为何不能输出

exports = {a: 1}

// 引用结果为 {}

exports和module.exports 都是指向一个空对象的,exports = {a: 1}这种方式也是这个空对象赋值,但是输出的为什么还是一个空对象呢?求大佬指点。。


蛊毒传说
浏览 989回答 2
2回答

RISEBY

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}`
随时随地看视频慕课网APP

相关分类

Node.js
我要回答