# Global Objects These objects are available in all modules. The following variables may appear to be global but are not. They exist only in the scope of modules, see the [module system documentation][]: * [`__dirname`][] * [`__filename`][] * [`exports`][] * [`module`][] * [`require()`][] The objects listed here are specific to Node.js. There are [built-in objects][] that are part of the JavaScript language itself, which are also globally accessible. ## Class: `Buffer` * {Function} Used to handle binary data. See the [buffer section][]. ## `__dirname` This variable may appear to be global but is not. See [`__dirname`][]. ## `__filename` This variable may appear to be global but is not. See [`__filename`][]. ## `clearImmediate(immediateObject)` [`clearImmediate`][] is described in the [timers][] section. ## `clearInterval(intervalObject)` [`clearInterval`][] is described in the [timers][] section. ## `clearTimeout(timeoutObject)` [`clearTimeout`][] is described in the [timers][] section. ## `console` * {Object} Used to print to stdout and stderr. See the [`console`][] section. ## `exports` This variable may appear to be global but is not. See [`exports`][]. ## `global` * {Object} The global namespace object. In browsers, the top-level scope is the global scope. This means that within the browser `var something` will define a new global variable. In Node.js this is different. The top-level scope is not the global scope; `var something` inside a Node.js module will be local to that module. ## `module` This variable may appear to be global but is not. See [`module`][]. ## `process` * {Object} The process object. See the [`process` object][] section. ## `queueMicrotask(callback)` * `callback` {Function} Function to be queued. The `queueMicrotask()` method queues a microtask to invoke `callback`. If `callback` throws an exception, the [`process` object][] `'uncaughtException'` event will be emitted. The microtask queue is managed by V8 and may be used in a similar manner to the [`process.nextTick()`][] queue, which is managed by Node.js. The `process.nextTick()` queue is always processed before the microtask queue within each turn of the Node.js event loop. ```js // Here, `queueMicrotask()` is used to ensure the 'load' event is always // emitted asynchronously, and therefore consistently. Using // `process.nextTick()` here would result in the 'load' event always emitting // before any other promise jobs. DataHandler.prototype.load = async function load(key) { const hit = this._cache.get(url); if (hit !== undefined) { queueMicrotask(() => { this.emit('load', hit); }); return; } const data = await fetchData(key); this._cache.set(url, data); this.emit('load', data); }; ``` ## `require()` This variable may appear to be global but is not. See [`require()`][]. ## `setImmediate(callback[, ...args])` [`setImmediate`][] is described in the [timers][] section. ## `setInterval(callback, delay[, ...args])` [`setInterval`][] is described in the [timers][] section. ## `setTimeout(callback, delay[, ...args])` [`setTimeout`][] is described in the [timers][] section. ## `TextDecoder` The WHATWG `TextDecoder` class. See the [`TextDecoder`][] section. ## `TextEncoder` The WHATWG `TextEncoder` class. See the [`TextEncoder`][] section. ## `URL` The WHATWG `URL` class. See the [`URL`][] section. ## `URLSearchParams` The WHATWG `URLSearchParams` class. See the [`URLSearchParams`][] section. ## `WebAssembly` * {Object} The object that acts as the namespace for all W3C [WebAssembly][webassembly-org] related functionality. See the [Mozilla Developer Network][webassembly-mdn] for usage and compatibility. [`TextDecoder`]: util.html#util_class_util_textdecoder [`TextEncoder`]: util.html#util_class_util_textencoder [`URLSearchParams`]: url.html#url_class_urlsearchparams [`URL`]: url.html#url_class_url [`__dirname`]: modules.html#modules_dirname [`__filename`]: modules.html#modules_filename [`clearImmediate`]: timers.html#timers_clearimmediate_immediate [`clearInterval`]: timers.html#timers_clearinterval_timeout [`clearTimeout`]: timers.html#timers_cleartimeout_timeout [`console`]: console.html [`exports`]: modules.html#modules_exports [`module`]: modules.html#modules_module [`process.nextTick()`]: process.html#process_process_nexttick_callback_args [`process` object]: process.html#process_process [`require()`]: modules.html#modules_require_id [`setImmediate`]: timers.html#timers_setimmediate_callback_args [`setInterval`]: timers.html#timers_setinterval_callback_delay_args [`setTimeout`]: timers.html#timers_settimeout_callback_delay_args [buffer section]: buffer.html [built-in objects]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects [module system documentation]: modules.html [timers]: timers.html [webassembly-mdn]: https://developer.mozilla.org/en-US/docs/WebAssembly [webassembly-org]: https://webassembly.org