JavaScript 中有一個特殊的對象法牲,稱為全局對象(Global Object)陪蜻,它及其所有屬性都可以在程序的任何地方訪問仲闽,即全局變量。
在瀏覽器 JavaScript 中或舞,通常 window 是全局對象荆姆, 而 Node.js 中的全局對象是 global,所有全局變量(除了 global 本身以外)都是 global 對象的屬性映凳。
在 Node.js 我們可以直接訪問到 global 的屬性胆筒,而不需要在應(yīng)用中包含它。
當(dāng)你定義一個全局變量時诈豌,這個變量同時也會成為全局對象的屬性仆救,反之亦然。需要注 意的是矫渔,在 Node.js 中你不可能在最外層定義變量彤蔽,因?yàn)樗杏脩舸a都是屬于當(dāng)前模塊的, 而模塊本身不是最外層上下文庙洼。
注意: 永遠(yuǎn)使用 var 定義變量以避免引入全局變量顿痪,因?yàn)槿肿兞繒廴?命名空間,提高代碼的耦合風(fēng)險(xiǎn)油够。
1.__filename
__filename 表示當(dāng)前正在執(zhí)行的腳本的文件名蚁袭。它將輸出文件所在位置的絕對路徑,且和命令行參數(shù)所指定的文件名不一定相同石咬。 如果在模塊中揩悄,返回的值是模塊文件的路徑。
//hello.js中的內(nèi)容
console.log(__filename) // \nodeserve\hello.js 打印當(dāng)前文件的路徑
2.__dirname
__dirname 表示當(dāng)前執(zhí)行腳本所在的目錄鬼悠。
//hello.js中的內(nèi)容
console.log(__dirname) // \nodeserve删性,當(dāng)前腳本文件所在的目錄文件夾
3.setTimeout(cb, ms)
setTimeout(cb, ms) 全局函數(shù)在指定的毫秒(ms)數(shù)后執(zhí)行指定函數(shù)(cb)亏娜。:setTimeout() 只執(zhí)行一次指定函數(shù)。
4.clearTimeout(t)
clearTimeout( t ) 全局函數(shù)用于停止一個之前通過 setTimeout() 創(chuàng)建的定時器蹬挺。 參數(shù) t 是通過 setTimeout() 函數(shù)創(chuàng)建的定時器维贺。
5.console
console.log()
console.info()
console.error()
console.warn()
console.time()
...
6.process
process 是一個全局變量,即 global 對象的屬性巴帮。
它用于描述當(dāng)前Node.js 進(jìn)程狀態(tài)的對象幸缕,提供了一個與操作系統(tǒng)的簡單接口。