天天看點

Node.js學習筆記(十二、全局對象)

Node.js 全局對象

JavaScript 中有一個特殊的對象,稱為全局對象(Global Object),它及其所有屬性都可以在程式的任何地方通路,即全局變量。

在浏覽器 JavaScript 中,通常 window 是全局對象, 而 Node.js 中的全局對象是 global,所有全局變量(除了 global 本身以外)都是 global 對象的屬性。

在 Node.js 我們可以直接通路到 global 的屬性,而不需要在應用中包含它。

全局對象與全局變量

global 最根本的作用是作為全局變量的宿主。按照 ECMAScript 的定義,滿足以下條 件的變量是全局變量:

在最外層定義的變量;

全局對象的屬性;

隐式定義的變量(未定義直接指派的變量)。

當你定義一個全局變量時,這個變量同時也會成為全局對象的屬性,反之亦然。需要注 意的是,在 Node.js 中你不可能在最外層定義變量,因為所有使用者代碼都是屬于目前子產品的, 而子產品本身不是最外層上下文。

注意: 最好不要使用 var 定義變量以避免引入全局變量,因為全局變量會污染命名空間,提高代碼的耦合風險。

__filename

_filename 表示目前正在執行的腳本的檔案名。它将輸出檔案所在位置的絕對路徑,且和指令行參數所指定的檔案名不一定相同。 如果在子產品中,傳回的值是子產品檔案的路徑。

執行個體,fileName.js:

//輸出全局變量,filename,目前執行腳本檔案名
console.log( "this file's name:"+__filename );      

運作:

Node.js學習筆記(十二、全局對象)

_dirname

_dirname表示目前正在執行腳本檔案所在路徑。

執行個體,dirName.js:

//輸出目前執行腳本所在目錄
console.log( __dirname );      
Node.js學習筆記(十二、全局對象)

setTimeout(cb, ms)

setTimeout(cb, ms) 全局函數在指定的毫秒(ms)數後執行指定函數(cb)。:setTimeout() 隻執行一次指定函數。

傳回一個代表定時器的句柄值。

sto.js:

function printHello(){
   console.log( "Hello, World!");
}
// 兩秒後執行以上函數
setTimeout(printHello, 2000);      
Node.js學習筆記(十二、全局對象)

clearTimeout(t)

與setTimeout()對應,結束掉一個由serTimeOut()生成的定時器。

執行個體,cto.js:

function printHello(){
   console.log( "Hello, World!");
}
// 兩秒後執行以上函數
var t = setTimeout(printHello, 2000);

// 清除定時器
clearTimeout(t);      

沒有定時效果,

Node.js學習筆記(十二、全局對象)

其餘的全局對象還有:

console:用于控制台輸出。

progress:與程序相關,便于更好控制系統互動。

參考:

【1】、

https://www.runoob.com/nodejs/nodejs-global-object.html

【2】、

https://www.w3cschool.cn/nodejs/nodejs-global-object.html

繼續閱讀