# 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 a number of [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) > Stability: 1 - Experimental * `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. [`__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` object]: process.html#process_process [`require()`]: modules.html#modules_require [`setImmediate`]: timers.html#timers_setimmediate_callback_args [`setInterval`]: timers.html#timers_setinterval_callback_delay_args [`setTimeout`]: timers.html#timers_settimeout_callback_delay_args [`TextDecoder`]: util.html#util_class_util_textdecoder [`TextEncoder`]: util.html#util_class_util_textencoder [`URL`]: url.html#url_class_url [`URLSearchParams`]: url.html#url_class_urlsearchparams [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