摘要:看了好多篇博客,對(duì)于和區(qū)別的解釋眾說紛紜有點(diǎn)迷糊,還是自己寫來感受一下吧。會(huì)造成被另外一個(gè)內(nèi)存地址替換,也就中斷得了和的聯(lián)系。調(diào)用了我調(diào)用了我調(diào)用了我兩者的值又相同。小弟才疏學(xué)淺,講解較為啰嗦,亦是初次寫之,若有疏漏,妄不吝賜教,特此感謝。
看了好多篇博客,對(duì)于module.exports和exports區(qū)別的解釋眾說紛紜有點(diǎn)迷糊,還是自己寫demo來感受一下吧。
module.exports和exports的默認(rèn)值
console.log(module); //Module { id: ".", exports: {}, ...} console.log(exports); //{}
可以看到module.exports和exports的默認(rèn)值都是空對(duì)象(對(duì)象是引用類型?。?/p>
foo.js
exports.foo = "exports調(diào)用了我"; console.log(module.exports); //{ foo: "exports調(diào)用了我" } console.log(exports); //{ foo: "exports調(diào)用了我" } module.exports.foo = "module調(diào)用了我"; console.log(module.exports); //{ foo: "module調(diào)用了我" } console.log(exports); //{ foo: "module調(diào)用了我" }
main.js
var foo= require("./foo"); console.log(foo); //{ foo: "module調(diào)用了我" }
結(jié)論:require調(diào)用的是module.exports當(dāng)中的值,而exports則是module.exports的引用,兩者調(diào)用的是同一個(gè)內(nèi)存地址。
foo.js
exports = "exports調(diào)用了我"; console.log(module.exports); //{} console.log(exports); //{ foo: "exports調(diào)用了我" }
main.js
var foo= require("./foo"); console.log(foo); //{}
如果你對(duì)引用類型的理解不夠深刻,直接給exports賦值。會(huì)造成exports被另外一個(gè)內(nèi)存地址替換,也就中斷得了module.exports和exports的聯(lián)系。
但你又想讓他們賦值相同,你可以這么做。
foo.js
exports = "exports調(diào)用了我"; module.exports = exports; console.log(module.exports); //{foo: "exports調(diào)用了我"} console.log(exports); //{ foo: "exports調(diào)用了我" }
兩者的值又相同。因?yàn)槔踝永镉玫氖亲址?,是普通類型,意味著每次改變值都得用module.exports = exports;去重新同步值。所以還是不建議exports = "exports調(diào)用了我";這樣去賦值,保留初始值的對(duì)象形式或者自己賦值成引用類型對(duì)使用會(huì)比較方便。
小弟才疏學(xué)淺,講解較為啰嗦,亦是初次寫之,若有疏漏,妄不吝賜教,特此感謝。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/95597.html
摘要:中最常用的恐怕就是,以及了,那么和這兩者有什么區(qū)別,在什么情況下使用,又在什么時(shí)候使用。在拼接之后的代碼中,給這個(gè)函數(shù)傳入的是,也就是說和引用的是同一個(gè)對(duì)象。如果我們給增加屬性,那么因?yàn)橐矔?huì)增加相同的屬性,此時(shí)。 Node.js中最常用的恐怕就是 require, exports 以及 module.exports 了,那么 exports 和 module.exports 這兩者有什...
摘要:依賴全部加載完成后,調(diào)用回調(diào)函數(shù)規(guī)范異步加載模塊規(guī)范和很相似,簡(jiǎn)單,并與和的規(guī)范保持了很大的兼容性在規(guī)范中,一個(gè)模塊就是一個(gè)文件。 拋出問題: 在開發(fā)中在導(dǎo)入模塊時(shí)經(jīng)常使用require和import; 導(dǎo)出模塊時(shí)使用module.exports/exports或者export/export default; 有時(shí)候?yàn)榱艘靡粋€(gè)模塊會(huì)使用require奇怪的是也可以使用import?...
摘要:依賴全部加載完成后,調(diào)用回調(diào)函數(shù)規(guī)范異步加載模塊規(guī)范和很相似,簡(jiǎn)單,并與和的規(guī)范保持了很大的兼容性在規(guī)范中,一個(gè)模塊就是一個(gè)文件。 拋出問題: 在開發(fā)中在導(dǎo)入模塊時(shí)經(jīng)常使用require和import; 導(dǎo)出模塊時(shí)使用module.exports/exports或者export/export default; 有時(shí)候?yàn)榱艘靡粋€(gè)模塊會(huì)使用require奇怪的是也可以使用import?...
摘要:主要區(qū)別是需要在聲明模塊時(shí)指定所有的依賴,通過形參傳遞依賴到模塊內(nèi)容中。 前言 昨天,公司同事問了我如下一個(gè)問題: showImg(https://segmentfault.com/img/bVWXYP?w=548&h=346); 說他在看一個(gè)插件時(shí),看到了源碼結(jié)構(gòu)如截圖所示,他知道(function(){})()是一種立即執(zhí)行函數(shù),但是在截圖中,最后的那個(gè)圓括號(hào)里又寫了一個(gè)函數(shù)fun...
閱讀 2316·2021-10-13 09:39
閱讀 3429·2021-09-30 09:52
閱讀 812·2021-09-26 09:55
閱讀 2788·2019-08-30 13:19
閱讀 1904·2019-08-26 10:42
閱讀 3199·2019-08-26 10:17
閱讀 554·2019-08-23 14:52
閱讀 3649·2019-08-23 14:39