91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node中module.exports和exports區別是什么

發布時間:2023-03-09 11:30:28 來源:億速云 閱讀:239 作者:iii 欄目:開發技術

本篇內容介紹了“Node中module.exports和exports區別是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    一、當使用分別暴露時,module.exports和exports是一樣的

    math.js

    const add = (a, b) => a + b
    const subtract = (a, b) => a - b
    module.exports.add = add
    module.exports.subtract = subtract

    index.js

    const math = require('./math')
    console.log(math.add(2, 3))
    console.log(math.subtract(2, 3))

    執行 node .\index.js會打印5和-1

    此時,若你在math.js中使用exports分別暴露時也是可以的:

    // module.exports.add = add
    // module.exports.subtract = subtract
    exports.add = add
    exports.subtract = subtract

    二、當使用統一暴露時,它倆是不一樣的

    module.exports的統一暴露

    實際中我們經常這樣寫

    module.exports = { add, subtract }

    此時執行node index還是會打印5和-1

    使用exports同一個暴露

    // module.exports = { add, subtract }
    exports = { add, subtract }

    此時再執行node index會報錯:

    TypeError: math.add is not a function

    三、為什么exports可以分別暴露,但不能統一暴露

    觀察源碼里這幾句代碼:

    const exports = this.exports;  
    const thisValue = exports;  
    const module = this;

    Node中module.exports和exports區別是什么

    由此可見,exports和module.exports指向同一個對象。所以當你使用分別暴露時,實質上是給這個對象上添加了一個個屬性,這兩種方式是同一個意思。

    但是,一旦寫成統一暴露,exports = { add, subtract }改變了exports的指向,切斷了與module.exports之間的引用關系,exports不再是module.exports的那個對象了。

    “Node中module.exports和exports區別是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    西昌市| 龙陵县| 新竹市| 邹平县| 四川省| 垦利县| 图们市| 霍林郭勒市| 班戈县| 凤城市| 益阳市| 育儿| 凤台县| 波密县| 阜新| 闵行区| 将乐县| 宝兴县| 阿勒泰市| 高青县| 万盛区| 汉中市| 比如县| 白朗县| 阿瓦提县| 北辰区| 房山区| 澳门| 扶余县| 宝清县| 涿鹿县| 清苑县| 拉萨市| 华容县| 南陵县| 隆化县| 乐业县| 静安区| 美姑县| 义乌市| 钟山县|