国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解nodejs中exports和module.exports的區別

2024-05-06 15:11:15
字體:
來源:轉載
供稿:網友

require 用來加載代碼,而 exports 和 module.exports 則用來導出代碼。但很多新手可能會迷惑于 exports 和 module.exports 的區別,為了更好的理解 exports 和 module.exports 的關系,我們先來鞏固下 js 的基礎。示例:

app.js

var a = {name: 'nswbmw 1'};var b = a;console.log(a);console.log(b);b.name = 'nswbmw 2';console.log(a);console.log(b);var b = {name: 'nswbmw 3'};console.log(a);console.log(b);

運行 app.js 結果為:

{ name: 'nswbmw 1' }{ name: 'nswbmw 1' }{ name: 'nswbmw 2' }{ name: 'nswbmw 2' }{ name: 'nswbmw 2' }{ name: 'nswbmw 3' }

解釋一下:a 是一個對象,b 是對 a 的引用,即 a 和 b 指向同一個對象,即 a 和 b 指向同一塊內存地址,所以前兩個輸出一樣。當對 b 作修改時,即 a 和 b 指向同一塊內存地址的內容發生了改變,所以 a 也會體現出來,所以第三、四個輸出一樣。當對 b 完全覆蓋時,b 就指向了一塊新的內存地址(并沒有對原先的內存塊作修改),a 還是指向原來的內存塊,即 a 和 b 不再指向同一塊內存,也就是說此時 a 和 b 已毫無關系,所以最后兩個輸出不一樣。

明白了上述例子后,我們進入正題。

我們只需知道三點即可知道 exports 和 module.exports 的區別了:

exports 是指向的 module.exports 的引用 module.exports 初始值為一個空對象 {},所以 exports 初始值也是 {} require() 返回的是 module.exports 而不是 exports

所以:我們通過

var name = 'nswbmw';exports.name = name;exports.sayName = function() { console.log(name);}

給 exports 賦值其實是給 module.exports 這個空對象添加了兩個屬性而已,上面的代碼相當于:

var name = 'nswbmw';module.exports.name = name;module.exports.sayName = function() { console.log(name);}

我們通常這樣使用 exports 和 module.exports

一個簡單的例子,計算圓的面積:

使用 exports

app.js

var circle = require('./circle');console.log(circle.area(4));

circle.js

exports.area = function(r) { return r * r * Math.PI;}

使用 module.exports

app.js

var area = require('./area');console.log(area(4));

area.js

module.exports = function(r) { return r * r * Math.PI;}

上面兩個例子輸出是一樣的。你也許會問,為什么不這樣寫呢?

app.js

var area = require('./area');console.log(area(4));

area.js

exports = function(r) { return r * r * Math.PI;}

運行上面的例子會報錯。這是因為,前面的例子中通過給 exports 添加屬性,只是對 exports 指向的內存做了修改,而

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 宝应县| 舞阳县| 祥云县| 淮北市| 郑州市| 靖江市| 怀集县| 和硕县| 沙湾县| 玛纳斯县| 克东县| 大埔区| 驻马店市| 海口市| 榕江县| 石景山区| 信阳市| 卢龙县| 诏安县| 永兴县| 宁陕县| 沂南县| 湖北省| 武陟县| 梓潼县| 绍兴县| 龙州县| 龙门县| 巴彦淖尔市| 陵川县| 南澳县| 正定县| 彭州市| 蕲春县| 南投县| 盘锦市| 通州区| 那曲县| 鹤庆县| 平阳县| 隆子县|