溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

nodejs與瀏覽器中全局對(duì)象區(qū)別是什么

發(fā)布時(shí)間:2021-12-06 09:00:15 來(lái)源:億速云 閱讀:129 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“nodejs與瀏覽器中全局對(duì)象區(qū)別是什么”,在日常操作中,相信很多人在nodejs與瀏覽器中全局對(duì)象區(qū)別是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”nodejs與瀏覽器中全局對(duì)象區(qū)別是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

Node.js中,一個(gè).js文件就是一個(gè)完整的作用域(module,模塊)。因此 var 聲明的變量只在當(dāng)前.js文件中有效,而不是全局有效。 而global全局對(duì)象是獨(dú)立于所有的.js(module,模塊)之上的。

而在瀏覽器中的最頂層全局對(duì)象是window,var聲明的變量默認(rèn)綁定到window對(duì)象上

1. 全局對(duì)象的定義

概念:在程序的任何地方都可以訪問(wèn)的對(duì)象,稱(chēng)之為全局對(duì)象。對(duì)象的屬性稱(chēng)為全局變量。

2. NodeJS中的全局變量總結(jié)

這里我們總結(jié)下在nodejs中,我們常用的全局變量有哪些

2.1 Buffer類(lèi)

Buffer,我們也可以稱(chēng)為“緩沖區(qū)”,其功能就是在內(nèi)存中開(kāi)辟一片區(qū)域,用來(lái)存放二進(jìn)制數(shù)據(jù)。

2.2 __dirname

__dirname,返回當(dāng)前模塊文件解析過(guò)后所在的文件夾(目錄)的絕對(duì)路徑。

請(qǐng)記住,__dirname并不是真正的全局變量。

2.3 __filename

__filename,返回當(dāng)前模塊文件被解析過(guò)后的絕對(duì)路徑。

請(qǐng)記住,__filename并不是真正的全局變量。

2.4 module

請(qǐng)記住,module并不是真正的全局變量。

2.5 require()

請(qǐng)記住,require()并不是真正的全局變量。

2.6 exports

請(qǐng)記住,exports并不是真正的全局變量。

2.7 setImmediate和clearImmediate

2.8 setTimeout和clearTimeout

2.9 setInterval 和 clearInterval

2.10 console

用于打印到標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤

2.11 process

process 對(duì)象提供有關(guān)當(dāng)前 Node.js 進(jìn)程的信息并對(duì)其進(jìn)行控制。

2.12 URL

URL 用于網(wǎng)址處理和解析的實(shí)用工具

2.13 events

events模塊是Node對(duì)“發(fā)布/訂閱”模式(publish/subscribe)的實(shí)現(xiàn)。一個(gè)對(duì)象通過(guò)這個(gè)模塊,向另一個(gè)對(duì)象傳遞消息。該模塊通過(guò)EventEmitter屬性,提供了一個(gè)構(gòu)造函數(shù)。

3. globalThis

3.1 globalThis是什么?

JS 語(yǔ)言越來(lái)越多被用于各種環(huán)境中。除了最常見(jiàn)的瀏覽器之外,它還可以在服務(wù)器、智能手機(jī)甚至機(jī)器人硬件上運(yùn)行。

每個(gè)環(huán)境都有其自己的對(duì)象模型,并提供了不同的語(yǔ)法來(lái)訪問(wèn)全局對(duì)象。例如,在 Web 瀏覽器中,可以通過(guò)window,self或frames訪問(wèn)全局對(duì)象。但是,在 Node.js 中,這些屬性不存在,而必須使用global。

globalThis旨在通過(guò)定義一個(gè)標(biāo)準(zhǔn)的全局屬性來(lái)整合日益分散的訪問(wèn)全局對(duì)象的方法。該提案被納入ES2020標(biāo)準(zhǔn)。所有流行的瀏覽器,包括Chrome 71+、Firefox 65+和Safari 12.1+,都已經(jīng)支持這項(xiàng)功能。你也可以在Node.js 12+中來(lái)使用它。

內(nèi)容擴(kuò)展:

NodeJS - global全局對(duì)象

function global() {
    // 全局變量。__filename 表示當(dāng)前正在執(zhí)行的腳本的文件名。
    console.info('__filename: ' + __filename ); // __filename: D:\github\nodejs-test\requestHandlers.js

    // 全局變量。__dirname 表示當(dāng)前執(zhí)行腳本所在的目錄。
    console.info('__dirname : ' + __dirname  ); // __dirname : D:\github\nodejs-test

    // 全局函數(shù)。setTimeout(cb, ms) 全局函數(shù)在指定的毫秒(ms)數(shù)后執(zhí)行指定函數(shù)(cb)。setTimeout() 只執(zhí)行一次指定函數(shù)。返回一個(gè)代表定時(shí)器的句柄值。
    setTimeout(function () {
        console.info('setTimeout: 我只執(zhí)行一次。');
    }, 2000);

    // 全局函數(shù)。clearTimeout( t ) 全局函數(shù)用于停止一個(gè)之前通過(guò) setTimeout() 創(chuàng)建的定時(shí)器。 參數(shù) t 是通過(guò) setTimeout() 函數(shù)創(chuàng)建的定時(shí)器。
    let t = setTimeout(function () {
        console.info('clearTimeout: 我沒(méi)辦法執(zhí)行了。');
    }, 2000);
    clearTimeout(t); // 清除定時(shí)器

    // 全局函數(shù)。setInterval(cb, ms) 全局函數(shù)在指定的毫秒(ms)數(shù)后執(zhí)行指定函數(shù)(cb)。
    let tt = setInterval(function () {
        console.info('setInterval: 我每2秒執(zhí)行一次。');
    }, 2000);

    // 全局函數(shù)。setInterval() 方法會(huì)不停地調(diào)用函數(shù),直到 clearInterval() 被調(diào)用或窗口被關(guān)閉。
    setTimeout(function () {
        clearInterval(tt); // 清除定時(shí)器
    }, 5000);

    // 全局對(duì)象。console
    console.info('console: 我也屬于global。');

    // 全局變量。global 對(duì)象的屬性。process
    console.info('process 當(dāng)前目錄: ' + process.cwd()); // 輸出當(dāng)前目錄
    console.info('process 當(dāng)前版本: ' + process.version); // 輸出當(dāng)前版本
    console.info('process 平臺(tái)信息: ' + process.platform); // 輸出平臺(tái)信息
}

輸出:

__filename: D:\github\nodejs-test\requestHandlers.js
__dirname : D:\github\nodejs-test
console: 我也屬于global。
process 當(dāng)前目錄: D:\github\nodejs-test
process 當(dāng)前版本: v10.15.3
process 平臺(tái)信息: win32
setTimeout: 我只執(zhí)行一次。
setInterval: 我每2秒執(zhí)行一次。
setInterval: 我每2秒執(zhí)行一次。

到此,關(guān)于“nodejs與瀏覽器中全局對(duì)象區(qū)別是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI