Node.js 全局對象

全局對象與全局變量javascript

global 最根本的做用是做爲全局變量的宿主。按照 ECMAScript 的定義,知足如下條 件的變量是全局變量:java

  • 在最外層定義的變量;
  • 全局對象的屬性;
  • 隱式定義的變量(未定義直接賦值的變量)。

當你定義一個全局變量時,這個變量同時也會成爲全局對象的屬性,反之亦然。須要注 意的是,在 Node.js 中你不可能在最外層定義變量,由於全部用戶代碼都是屬於當前模塊的, 而模塊自己不是最外層上下文。node

注意: 永遠使用 var 定義變量以免引入全局變量,由於全局變量會污染 命名空間,提升代碼的耦合風險。linux

__filename

__filename 表示當前正在執行的腳本的文件名。它將輸出文件所在位置的絕對路徑,且和命令行參數所指定的文件名不必定相同。 若是在模塊中,返回的值是模塊文件的路徑。chrome

__dirname

__dirname 表示當前執行腳本所在的目錄。shell

setTimeout(cb, ms)

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

返回一個表明定時器的句柄值。瀏覽器

clearTimeout(t)

clearTimeout( t ) 全局函數用於中止一個以前經過 setTimeout() 建立的定時器。 參數 t 是經過 setTimeout() 函數建立的定時器。架構

setInterval(cb, ms)

setInterval(cb, ms) 全局函數在指定的毫秒(ms)數後執行指定函數(cb)。dom

返回一個表明定時器的句柄值。可使用 clearInterval(t) 函數來清除定時器。

setInterval() 方法會不停地調用函數,直到 clearInterval() 被調用或窗口被關閉。

console

console 用於提供控制檯標準輸出,它是由 Internet Explorer 的 JScript 引擎提供的調試工具,後來逐漸成爲瀏覽器的實施標準。

Node.js 沿用了這個標準,提供與習慣行爲一致的 console 對象,用於向標準輸出流(stdout)或標準錯誤流(stderr)輸出字符。

console 方法

如下爲 console 對象的方法:

 

序號 方法 & 描述
1 console.log([data][, ...])
向標準輸出流打印字符並以換行符結束。該方法接收若干 個參數,若是隻有一個參數,則輸出這個參數的字符串形式。若是有多個參數,則 以相似於C 語言 printf() 命令的格式輸出。
2 console.info([data][, ...])
該命令的做用是返回信息性消息,這個命令與console.log差異並不大,除了在chrome中只會輸出文字外,其他的會顯示一個藍色的驚歎號。
3 console.error([data][, ...])
輸出錯誤消息的。控制檯在出現錯誤時會顯示是紅色的叉子。
4 console.warn([data][, ...])
輸出警告消息。控制檯出現有黃色的驚歎號。
5 console.dir(obj[, options])
用來對一個對象進行檢查(inspect),並以易於閱讀和打印的格式顯示。
6 console.time(label)
輸出時間,表示計時開始。
7 console.timeEnd(label)
結束時間,表示計時結束。
8 console.trace(message[, ...])
當前執行的代碼在堆棧中的調用路徑,這個測試函數運行頗有幫助,只要給想測試的函數裏面加入 console.trace 就好了。
9 console.assert(value[, message][, ...])
用於判斷某個表達式或變量是否爲真,接收兩個參數,第一個參數是表達式,第二個參數是字符串。只有當第一個參數爲false,纔會輸出第二個參數,不然不會有任何結果。

console.log():向標準輸出流打印字符並以換行符結束。

console.log 接收若干 個參數,若是隻有一個參數,則輸出這個參數的字符串形式。若是有多個參數,則 以相似於C 語言 printf() 命令的格式輸出。

process

process 是一個全局變量,即 global 對象的屬性。

它用於描述當前Node.js 進程狀態的對象,提供了一個與操做系統的簡單接口。一般在你寫本地命令行程序的時候,少不了要 和它打交道。下面將會介紹 process 對象的一些最經常使用的成員方法。

 

序號 事件 & 描述
1 exit
當進程準備退出時觸發。
2 beforeExit
當 node 清空事件循環,而且沒有其餘安排時觸發這個事件。一般來講,當沒有進程安排時 node 退出,可是 'beforeExit' 的監聽器能夠異步調用,這樣 node 就會繼續執行。
3 uncaughtException
當一個異常冒泡回到事件循環,觸發這個事件。若是給異常添加了監視器,默認的操做(打印堆棧跟蹤信息並退出)就不會發生。
4 Signal 事件
當進程接收到信號時就觸發。信號列表詳見標準的 POSIX 信號名,如 SIGINT、SIGUSR1 等。

  

退出狀態碼

退出狀態碼以下所示:

狀態碼 名稱 & 描述
1 Uncaught Fatal Exception
有未捕獲異常,而且沒有被域或 uncaughtException 處理函數處理。
2 Unused
保留
3 Internal JavaScript Parse Error
JavaScript的源碼啓動 Node 進程時引發解析錯誤。很是罕見,僅會在開發 Node 時纔會有。
4 Internal JavaScript Evaluation Failure
JavaScript 的源碼啓動 Node 進程,評估時返回函數失敗。很是罕見,僅會在開發 Node 時纔會有。
5 Fatal Error
V8 裏致命的不可恢復的錯誤。一般會打印到 stderr ,內容爲: FATAL ERROR
6 Non-function Internal Exception Handler
未捕獲異常,內部異常處理函數不知爲什麼設置爲on-function,而且不能被調用。
7 Internal Exception Handler Run-Time Failure
未捕獲的異常, 而且異常處理函數處理時本身拋出了異常。例如,若是 process.on('uncaughtException') 或 domain.on('error') 拋出了異常。
8 Unused
保留
9 Invalid Argument
多是給了未知的參數,或者給的參數沒有值。
10 Internal JavaScript Run-Time Failure
JavaScript的源碼啓動 Node 進程時拋出錯誤,很是罕見,僅會在開發 Node 時纔會有。
12 Invalid Debug Argument 
設置了參數--debug 和/或 --debug-brk,可是選擇了錯誤端口。
128 Signal Exits
若是 Node 接收到致命信號,好比SIGKILL 或 SIGHUP,那麼退出代碼就是128 加信號代碼。這是標準的 Unix 作法,退出信號代碼放在高位。

Process 屬性

Process 提供了不少有用的屬性,便於咱們更好的控制系統的交互:

 

序號. 屬性 & 描述
1 stdout
標準輸出流。
2 stderr
標準錯誤流。
3 stdin
標準輸入流。
4 argv
argv 屬性返回一個數組,由命令行執行腳本時的各個參數組成。它的第一個成員老是node,第二個成員是腳本文件名,其他成員是腳本文件的參數。
5 execPath
返回執行當前腳本的 Node 二進制文件的絕對路徑。
6 execArgv
返回一個數組,成員是命令行下執行腳本時,在Node可執行文件與腳本文件之間的命令行參數。
7 env
返回一個對象,成員爲當前 shell 的環境變量
8 exitCode
進程退出時的代碼,若是進程優經過 process.exit() 退出,不須要指定退出碼。
9 version
Node 的版本,好比v0.10.18。
10 versions
一個屬性,包含了 node 的版本和依賴.
11 config
一個包含用來編譯當前 node 執行文件的 javascript 配置選項的對象。它與運行 ./configure 腳本生成的 "config.gypi" 文件相同。
12 pid
當前進程的進程號。
13 title
進程名,默認值爲"node",能夠自定義該值。
14 arch
當前 CPU 的架構:'arm'、'ia32' 或者 'x64'。
15 platform
運行程序所在的平臺系統 'darwin', 'freebsd', 'linux', 'sunos' 或 'win32'
16 mainModule
require.main 的備選方法。不一樣點,若是主模塊在運行時改變,require.main可能會繼續返回老的模塊。能夠認爲,這二者引用了同一個模塊。

 

Process 提供了不少有用的方法,便於咱們更好的控制系統的交互:

序號 方法 & 描述
1 abort()
這將致使 node 觸發 abort 事件。會讓 node 退出並生成一個核心文件。
2 chdir(directory)
改變當前工做進程的目錄,若是操做失敗拋出異常。
3 cwd()
返回當前進程的工做目錄
4 exit([code])
使用指定的 code 結束進程。若是忽略,將會使用 code 0。
5 getgid()
獲取進程的羣組標識(參見 getgid(2))。獲取到得時羣組的數字 id,而不是名字。
注意:這個函數僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
6 setgid(id)
設置進程的羣組標識(參見 setgid(2))。能夠接收數字 ID 或者羣組名。若是指定了羣組名,會阻塞等待解析爲數字 ID 。
注意:這個函數僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
7 getuid()
獲取進程的用戶標識(參見 getuid(2))。這是數字的用戶 id,不是用戶名。
注意:這個函數僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
8 setuid(id)
設置進程的用戶標識(參見setuid(2))。接收數字 ID或字符串名字。果指定了羣組名,會阻塞等待解析爲數字 ID 。
注意:這個函數僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
9 getgroups()
返回進程的羣組 iD 數組。POSIX 系統沒有保證必定有,可是 node.js 保證有。
注意:這個函數僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
10 setgroups(groups)
設置進程的羣組 ID。這是受權操做,因此你須要有 root 權限,或者有 CAP_SETGID 能力。
注意:這個函數僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
11 initgroups(user, extra_group)
讀取 /etc/group ,並初始化羣組訪問列表,使用成員所在的全部羣組。這是受權操做,因此你須要有 root 權限,或者有 CAP_SETGID 能力。
注意:這個函數僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
12 kill(pid[, signal])
發送信號給進程. pid 是進程id,而且 signal 是發送的信號的字符串描述。信號名是字符串,好比 'SIGINT' 或 'SIGHUP'。若是忽略,信號會是 'SIGTERM'。
13 memoryUsage()
返回一個對象,描述了 Node 進程所用的內存情況,單位爲字節。
14 nextTick(callback)
一旦當前事件循環結束,調用回調函數。
15 umask([mask])
設置或讀取進程文件的掩碼。子進程從父進程繼承掩碼。若是mask 參數有效,返回舊的掩碼。不然,返回當前掩碼。
16 uptime()
返回 Node 已經運行的秒數。
17 hrtime()返回當前進程的高分辨時間,形式爲 [seconds, nanoseconds]數組。它是相對於過去的任意事件。該值與日期無關,所以不受時鐘漂移的影響。主要用途是能夠經過精確的時間間隔,來衡量程序的性能。你能夠將以前的結果傳遞給當前的 process.hrtime() ,會返回二者間的時間差,用來基準和測量時間間隔。
相關文章
相關標籤/搜索