node中exports和module.exports都是一個(gè)空對(duì)象,輸出和引入的方式有:方式1:// a.jsmodule.exports = {a:1}// b.jsimport a from 'a.js' 或者 require('a.js')// 輸出 {a:1}方式2:// a.jsexports.a = 1// 引用的方式同方式1 輸出的值類型也是一樣都是一個(gè)對(duì)象// 但是如下這種方式為何不能輸出exports = {a: 1}// 引用結(jié)果為 {}exports和module.exports 都是指向一個(gè)空對(duì)象的,exports = {a: 1}這種方式也是這個(gè)空對(duì)象賦值,但是輸出的為什么還是一個(gè)空對(duì)象呢?求大佬指點(diǎn)。。
2 回答

RISEBY
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
Node 對(duì)每個(gè) JS 模塊都注入了兩個(gè)變量:
module = { exports: {} } exports = module.exports
注意,這兩個(gè)「exports」雖然名字相同,但含義完全不同,一個(gè)是 module
對(duì)象的屬性,一個(gè)是變量,只不過在模塊初始化階段這兩個(gè)標(biāo)識(shí)符引用了同一個(gè)對(duì)象。
于是,下面這個(gè)情況就好理解了:
module.exports.something = 123
// 此時(shí) `exports.something` 也是 123,因?yàn)?`module.exports` 和 `exports` 引用了同一個(gè)對(duì)象
exports = {something: 456}
// 這樣 `exports` 這個(gè)變量就被賦值為另一個(gè)對(duì)象,原來的對(duì)象依然被 `module.exports` 引用著
// 此時(shí) `module.exports` 還是 `{something: 123}`
- 2 回答
- 0 關(guān)注
- 1021 瀏覽
添加回答
舉報(bào)
0/150
提交
取消