# 全局對象
這些對象在所有模塊中都是可用的。有些對象實際上并非在全局作用域內而是在模塊作用域內——這種情況在以下文檔中會特別指出。
### global
- {Object} 全局命名空間對象。
在瀏覽器中,頂級作用域就是全局作用域。這就是說,在瀏覽器中,如果當前是在全局作用域內,`var something`將會聲明一個全局變量。在Node中則不同。頂級作用域并非全局作用域,在Node模塊里的`var something`只屬于那個模塊。
### process
- {Object}
進程對象。見 [進程對象](#)章節。
### console
- {Object}
用于打印標準輸出和標準錯誤。見[控制臺](#)章節。
### 類: Buffer
- {Function}
用于處理二進制數據。見[Buffer](#)章節。
### require()
- {Function}
引入模塊。見[Modules](#)章節。`require`實際上并非全局的而是各個模塊本地的。
### require.resolve()
使用內部的`require()`機制查找模塊的位置,但不加載模塊,只返回解析過的模塊文件路徑。
### require.cache
- {Object}
模塊在引入時會緩存到該對象。通過刪除該對象的鍵值,下次調用`require`時會重新加載相應模塊。
### require.extensions
~~~
穩定度:0 - 已廢棄
~~~
- {Object}
指導`require`方法如何處理特定的文件擴展名。
將`.sjs`文件作為`.js`文件處理:
~~~
require.extensions['.sjs'] = require.extensions['.js'];
~~~
**已廢棄** 之前,該列表用于按需編譯非JavaScript模塊并加載進Node。然而,實踐中有更好的方式實現該功能,如通過其他Node程序加載模塊,或提前將他們編譯成JavaScript代碼。
由于模塊系統的API已鎖定,該功能可能永遠不會去掉。改動它可能會產生細微的錯誤和復雜性,所以最好保持不變。
### __filename
- {String}
當前所執行代碼文件的文件路徑。這是該代碼文件經過解析后的絕對路徑。對于主程序來說,這和命令行中使用的文件路徑未必是相同的。在模塊中此變量值是該模塊文件的路徑。
例子:在`/Users/mjr`下運行`node example.js`
~~~
console.log(__filename);
// /Users/mjr/example.js
~~~
`__filename`實際上并非全局的而是各個模塊本地的。
### __dirname
- {String}
當前執行腳本所在目錄的目錄名。
例子:在`/Users/mjr`下運行`node example.js`
~~~
console.log(__dirname);
// /Users/mjr
~~~
`__dirname`實際上并非全局的而是各個模塊本地的。
### module
- {Object}
當前模塊的引用。特別地,`module.exports`和`exports`指向同一個對象。`module`實際上并非全局的而是各個模塊本地的。
詳情可見[模塊系統文檔](#)。
### exports
`module.exports`對象的引用,該對象被當前模塊的所有實例所共享,通過`require()`可訪問該對象。 何時使用`exports`以及何時使用`module.exports`的詳情可參見[模塊系統文檔](#)。 `exports`實際上并非全局的而是各個模塊本地的。
詳情可見[模塊系統文檔](#)。
關于模塊系統的更多信息可參見[模塊](#) 。
### setTimeout(cb, ms)
在*至少*`ms`毫秒后調用回調`cb`。實際延遲取決于外部因素,如操作系統定時器粒度及系統負載。
超時值必須在1-2147483647的范圍內(包含1和2147483647)。如果該值超出范圍,則該值被當作1毫秒處理。一般來說,一個定時器不能超過24.8天。
返回一個代表該定時器的句柄值。
### clearTimeout(t)
停止一個之前通過`setTimeout()`創建的定時器。回調不會再被執行。
### setInterval(cb, ms)
每隔`ms`毫秒重復調用回調`cb`。注意,取決于外部因素,如操作系統定時器粒度及系統負載,實際間隔可能會改變。它不會少于`ms`但可能比`ms`長。
間隔值必須在1-2147483647的范圍內(包含1和2147483647)。如果該值超出范圍,則該值被當作1毫秒處理。一般來說,一個定時器不能超過24.8天。
返回一個代表該定時器的句柄值。
### clearInterval(t)
停止一個之前通過`setInterval()`創建的定時器。回調不會再被執行。
定制器函數是全局變量。見[定時器](#)章節。