• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Global objects
2
3<!--introduced_in=v0.10.0-->
4
5<!-- type=misc -->
6
7These objects are available in all modules. The following variables may appear
8to be global but are not. They exist only in the scope of modules, see the
9[module system documentation][]:
10
11* [`__dirname`][]
12* [`__filename`][]
13* [`exports`][]
14* [`module`][]
15* [`require()`][]
16
17The objects listed here are specific to Node.js. There are [built-in objects][]
18that are part of the JavaScript language itself, which are also globally
19accessible.
20
21## Class: `AbortController`
22
23<!-- YAML
24added:
25  - v15.0.0
26  - v14.17.0
27changes:
28  - version: v15.4.0
29    pr-url: https://github.com/nodejs/node/pull/35949
30    description: No longer experimental.
31-->
32
33<!-- type=global -->
34
35A utility class used to signal cancelation in selected `Promise`-based APIs.
36The API is based on the Web API [`AbortController`][].
37
38```js
39const ac = new AbortController();
40
41ac.signal.addEventListener('abort', () => console.log('Aborted!'),
42                           { once: true });
43
44ac.abort();
45
46console.log(ac.signal.aborted);  // Prints true
47```
48
49### `abortController.abort([reason])`
50
51<!-- YAML
52added:
53  - v15.0.0
54  - v14.17.0
55changes:
56  - version:
57      - v17.2.0
58      - v16.14.0
59    pr-url: https://github.com/nodejs/node/pull/40807
60    description: Added the new optional reason argument.
61-->
62
63* `reason` {any} An optional reason, retrievable on the `AbortSignal`'s
64  `reason` property.
65
66Triggers the abort signal, causing the `abortController.signal` to emit
67the `'abort'` event.
68
69### `abortController.signal`
70
71<!-- YAML
72added:
73  - v15.0.0
74  - v14.17.0
75-->
76
77* Type: {AbortSignal}
78
79### Class: `AbortSignal`
80
81<!-- YAML
82added:
83  - v15.0.0
84  - v14.17.0
85-->
86
87* Extends: {EventTarget}
88
89The `AbortSignal` is used to notify observers when the
90`abortController.abort()` method is called.
91
92#### Static method: `AbortSignal.abort([reason])`
93
94<!-- YAML
95added:
96  - v15.12.0
97  - v14.17.0
98changes:
99  - version:
100      - v17.2.0
101      - v16.14.0
102    pr-url: https://github.com/nodejs/node/pull/40807
103    description: Added the new optional reason argument.
104-->
105
106* `reason`: {any}
107* Returns: {AbortSignal}
108
109Returns a new already aborted `AbortSignal`.
110
111#### Static method: `AbortSignal.timeout(delay)`
112
113<!-- YAML
114added:
115  - v17.3.0
116  - v16.14.0
117-->
118
119* `delay` {number} The number of milliseconds to wait before triggering
120  the AbortSignal.
121
122Returns a new `AbortSignal` which will be aborted in `delay` milliseconds.
123
124#### Static method: `AbortSignal.any(signals)`
125
126<!-- YAML
127added: v18.17.0
128-->
129
130* `signals` {AbortSignal\[]} The `AbortSignal`s of which to compose a new `AbortSignal`.
131
132Returns a new `AbortSignal` which will be aborted if any of the provided
133signals are aborted. Its [`abortSignal.reason`][] will be set to whichever
134one of the `signals` caused it to be aborted.
135
136#### Event: `'abort'`
137
138<!-- YAML
139added:
140  - v15.0.0
141  - v14.17.0
142-->
143
144The `'abort'` event is emitted when the `abortController.abort()` method
145is called. The callback is invoked with a single object argument with a
146single `type` property set to `'abort'`:
147
148```js
149const ac = new AbortController();
150
151// Use either the onabort property...
152ac.signal.onabort = () => console.log('aborted!');
153
154// Or the EventTarget API...
155ac.signal.addEventListener('abort', (event) => {
156  console.log(event.type);  // Prints 'abort'
157}, { once: true });
158
159ac.abort();
160```
161
162The `AbortController` with which the `AbortSignal` is associated will only
163ever trigger the `'abort'` event once. We recommended that code check
164that the `abortSignal.aborted` attribute is `false` before adding an `'abort'`
165event listener.
166
167Any event listeners attached to the `AbortSignal` should use the
168`{ once: true }` option (or, if using the `EventEmitter` APIs to attach a
169listener, use the `once()` method) to ensure that the event listener is
170removed as soon as the `'abort'` event is handled. Failure to do so may
171result in memory leaks.
172
173#### `abortSignal.aborted`
174
175<!-- YAML
176added:
177  - v15.0.0
178  - v14.17.0
179-->
180
181* Type: {boolean} True after the `AbortController` has been aborted.
182
183#### `abortSignal.onabort`
184
185<!-- YAML
186added:
187  - v15.0.0
188  - v14.17.0
189-->
190
191* Type: {Function}
192
193An optional callback function that may be set by user code to be notified
194when the `abortController.abort()` function has been called.
195
196#### `abortSignal.reason`
197
198<!-- YAML
199added:
200  - v17.2.0
201  - v16.14.0
202-->
203
204* Type: {any}
205
206An optional reason specified when the `AbortSignal` was triggered.
207
208```js
209const ac = new AbortController();
210ac.abort(new Error('boom!'));
211console.log(ac.signal.reason);  // Error: boom!
212```
213
214#### `abortSignal.throwIfAborted()`
215
216<!-- YAML
217added: v17.3.0
218-->
219
220If `abortSignal.aborted` is `true`, throws `abortSignal.reason`.
221
222## Class: `Blob`
223
224<!-- YAML
225added: v18.0.0
226-->
227
228<!-- type=global -->
229
230See {Blob}.
231
232## Class: `Buffer`
233
234<!-- YAML
235added: v0.1.103
236-->
237
238<!-- type=global -->
239
240* {Function}
241
242Used to handle binary data. See the [buffer section][].
243
244## Class: `ByteLengthQueuingStrategy`
245
246<!-- YAML
247added: v18.0.0
248-->
249
250> Stability: 1 - Experimental.
251
252A browser-compatible implementation of [`ByteLengthQueuingStrategy`][].
253
254## `__dirname`
255
256This variable may appear to be global but is not. See [`__dirname`][].
257
258## `__filename`
259
260This variable may appear to be global but is not. See [`__filename`][].
261
262## `atob(data)`
263
264<!-- YAML
265added: v16.0.0
266-->
267
268> Stability: 3 - Legacy. Use `Buffer.from(data, 'base64')` instead.
269
270Global alias for [`buffer.atob()`][].
271
272## `BroadcastChannel`
273
274<!-- YAML
275added: v18.0.0
276-->
277
278See {BroadcastChannel}.
279
280## `btoa(data)`
281
282<!-- YAML
283added: v16.0.0
284-->
285
286> Stability: 3 - Legacy. Use `buf.toString('base64')` instead.
287
288Global alias for [`buffer.btoa()`][].
289
290## `clearImmediate(immediateObject)`
291
292<!-- YAML
293added: v0.9.1
294-->
295
296<!--type=global-->
297
298[`clearImmediate`][] is described in the [timers][] section.
299
300## `clearInterval(intervalObject)`
301
302<!-- YAML
303added: v0.0.1
304-->
305
306<!--type=global-->
307
308[`clearInterval`][] is described in the [timers][] section.
309
310## `clearTimeout(timeoutObject)`
311
312<!-- YAML
313added: v0.0.1
314-->
315
316<!--type=global-->
317
318[`clearTimeout`][] is described in the [timers][] section.
319
320## Class: `CompressionStream`
321
322<!-- YAML
323added: v18.0.0
324-->
325
326> Stability: 1 - Experimental.
327
328A browser-compatible implementation of [`CompressionStream`][].
329
330## `console`
331
332<!-- YAML
333added: v0.1.100
334-->
335
336<!-- type=global -->
337
338* {Object}
339
340Used to print to stdout and stderr. See the [`console`][] section.
341
342## Class: `CountQueuingStrategy`
343
344<!-- YAML
345added: v18.0.0
346-->
347
348> Stability: 1 - Experimental.
349
350A browser-compatible implementation of [`CountQueuingStrategy`][].
351
352## `Crypto`
353
354<!-- YAML
355added: v17.6.0
356-->
357
358> Stability: 1 - Experimental. Enable this API with the
359> [`--experimental-global-webcrypto`][] CLI flag.
360
361A browser-compatible implementation of {Crypto}. This global is available
362only if the Node.js binary was compiled with including support for the
363`node:crypto` module.
364
365## `crypto`
366
367<!-- YAML
368added: v17.6.0
369-->
370
371> Stability: 1 - Experimental. Enable this API with the
372> [`--experimental-global-webcrypto`][] CLI flag.
373
374A browser-compatible implementation of the [Web Crypto API][].
375
376## `CryptoKey`
377
378<!-- YAML
379added: v17.6.0
380-->
381
382> Stability: 1 - Experimental. Enable this API with the
383> [`--experimental-global-webcrypto`][] CLI flag.
384
385A browser-compatible implementation of {CryptoKey}. This global is available
386only if the Node.js binary was compiled with including support for the
387`node:crypto` module.
388
389## `CustomEvent`
390
391<!-- YAML
392added: v18.7.0
393-->
394
395> Stability: 1 - Experimental. Enable this API with the
396> [`--experimental-global-customevent`][] CLI flag.
397
398<!-- type=global -->
399
400A browser-compatible implementation of the [`CustomEvent` Web API][].
401
402## Class: `DecompressionStream`
403
404<!-- YAML
405added: v18.0.0
406-->
407
408> Stability: 1 - Experimental.
409
410A browser-compatible implementation of [`DecompressionStream`][].
411
412## `Event`
413
414<!-- YAML
415added: v15.0.0
416changes:
417  - version: v15.4.0
418    pr-url: https://github.com/nodejs/node/pull/35949
419    description: No longer experimental.
420-->
421
422<!-- type=global -->
423
424A browser-compatible implementation of the `Event` class. See
425[`EventTarget` and `Event` API][] for more details.
426
427## `EventTarget`
428
429<!-- YAML
430added: v15.0.0
431changes:
432  - version: v15.4.0
433    pr-url: https://github.com/nodejs/node/pull/35949
434    description: No longer experimental.
435-->
436
437<!-- type=global -->
438
439A browser-compatible implementation of the `EventTarget` class. See
440[`EventTarget` and `Event` API][] for more details.
441
442## `exports`
443
444This variable may appear to be global but is not. See [`exports`][].
445
446## `fetch`
447
448<!-- YAML
449added: v17.5.0
450changes:
451  - version: v18.0.0
452    pr-url: https://github.com/nodejs/node/pull/41811
453    description: No longer behind `--experimental-global-fetch` CLI flag.
454-->
455
456> Stability: 1 - Experimental. Disable this API with the [`--no-experimental-fetch`][]
457> CLI flag.
458
459A browser-compatible implementation of the [`fetch()`][] function.
460
461## Class `FormData`
462
463<!-- YAML
464added: v17.6.0
465changes:
466  - version: v18.0.0
467    pr-url: https://github.com/nodejs/node/pull/41811
468    description: No longer behind `--experimental-global-fetch` CLI flag.
469-->
470
471> Stability: 1 - Experimental. Disable this API with the [`--no-experimental-fetch`][]
472> CLI flag.
473
474A browser-compatible implementation of {FormData}.
475
476## `global`
477
478<!-- YAML
479added: v0.1.27
480-->
481
482<!-- type=global -->
483
484> Stability: 3 - Legacy. Use [`globalThis`][] instead.
485
486* {Object} The global namespace object.
487
488In browsers, the top-level scope has traditionally been the global scope. This
489means that `var something` will define a new global variable, except within
490ECMAScript modules. In Node.js, this is different. The top-level scope is not
491the global scope; `var something` inside a Node.js module will be local to that
492module, regardless of whether it is a [CommonJS module][] or an
493[ECMAScript module][].
494
495## Class `Headers`
496
497<!-- YAML
498added: v17.5.0
499changes:
500  - version: v18.0.0
501    pr-url: https://github.com/nodejs/node/pull/41811
502    description: No longer behind `--experimental-global-fetch` CLI flag.
503-->
504
505> Stability: 1 - Experimental. Disable this API with the [`--no-experimental-fetch`][]
506> CLI flag.
507
508A browser-compatible implementation of {Headers}.
509
510## `MessageChannel`
511
512<!-- YAML
513added: v15.0.0
514-->
515
516<!-- type=global -->
517
518The `MessageChannel` class. See [`MessageChannel`][] for more details.
519
520## `MessageEvent`
521
522<!-- YAML
523added: v15.0.0
524-->
525
526<!-- type=global -->
527
528The `MessageEvent` class. See [`MessageEvent`][] for more details.
529
530## `MessagePort`
531
532<!-- YAML
533added: v15.0.0
534-->
535
536<!-- type=global -->
537
538The `MessagePort` class. See [`MessagePort`][] for more details.
539
540## `module`
541
542This variable may appear to be global but is not. See [`module`][].
543
544## `performance`
545
546<!-- YAML
547added: v16.0.0
548-->
549
550The [`perf_hooks.performance`][] object.
551
552## `process`
553
554<!-- YAML
555added: v0.1.7
556-->
557
558<!-- type=global -->
559
560* {Object}
561
562The process object. See the [`process` object][] section.
563
564## `queueMicrotask(callback)`
565
566<!-- YAML
567added: v11.0.0
568-->
569
570<!-- type=global -->
571
572* `callback` {Function} Function to be queued.
573
574The `queueMicrotask()` method queues a microtask to invoke `callback`. If
575`callback` throws an exception, the [`process` object][] `'uncaughtException'`
576event will be emitted.
577
578The microtask queue is managed by V8 and may be used in a similar manner to
579the [`process.nextTick()`][] queue, which is managed by Node.js. The
580`process.nextTick()` queue is always processed before the microtask queue
581within each turn of the Node.js event loop.
582
583```js
584// Here, `queueMicrotask()` is used to ensure the 'load' event is always
585// emitted asynchronously, and therefore consistently. Using
586// `process.nextTick()` here would result in the 'load' event always emitting
587// before any other promise jobs.
588
589DataHandler.prototype.load = async function load(key) {
590  const hit = this._cache.get(key);
591  if (hit !== undefined) {
592    queueMicrotask(() => {
593      this.emit('load', hit);
594    });
595    return;
596  }
597
598  const data = await fetchData(key);
599  this._cache.set(key, data);
600  this.emit('load', data);
601};
602```
603
604## Class: `ReadableByteStreamController`
605
606<!-- YAML
607added: v18.0.0
608-->
609
610> Stability: 1 - Experimental.
611
612A browser-compatible implementation of [`ReadableByteStreamController`][].
613
614## Class: `ReadableStream`
615
616<!-- YAML
617added: v18.0.0
618-->
619
620> Stability: 1 - Experimental.
621
622A browser-compatible implementation of [`ReadableStream`][].
623
624## Class: `ReadableStreamBYOBReader`
625
626<!-- YAML
627added: v18.0.0
628-->
629
630> Stability: 1 - Experimental.
631
632A browser-compatible implementation of [`ReadableStreamBYOBReader`][].
633
634## Class: `ReadableStreamBYOBRequest`
635
636<!-- YAML
637added: v18.0.0
638-->
639
640> Stability: 1 - Experimental.
641
642A browser-compatible implementation of [`ReadableStreamBYOBRequest`][].
643
644## Class: `ReadableStreamDefaultController`
645
646<!-- YAML
647added: v18.0.0
648-->
649
650> Stability: 1 - Experimental.
651
652A browser-compatible implementation of [`ReadableStreamDefaultController`][].
653
654## Class: `ReadableStreamDefaultReader`
655
656<!-- YAML
657added: v18.0.0
658-->
659
660> Stability: 1 - Experimental.
661
662A browser-compatible implementation of [`ReadableStreamDefaultReader`][].
663
664## `require()`
665
666This variable may appear to be global but is not. See [`require()`][].
667
668## `Response`
669
670<!-- YAML
671added: v17.5.0
672changes:
673  - version: v18.0.0
674    pr-url: https://github.com/nodejs/node/pull/41811
675    description: No longer behind `--experimental-global-fetch` CLI flag.
676-->
677
678> Stability: 1 - Experimental. Disable this API with the [`--no-experimental-fetch`][]
679> CLI flag.
680
681A browser-compatible implementation of {Response}.
682
683## `Request`
684
685<!-- YAML
686added: v17.5.0
687changes:
688  - version: v18.0.0
689    pr-url: https://github.com/nodejs/node/pull/41811
690    description: No longer behind `--experimental-global-fetch` CLI flag.
691-->
692
693> Stability: 1 - Experimental. Disable this API with the [`--no-experimental-fetch`][]
694> CLI flag.
695
696A browser-compatible implementation of {Request}.
697
698## `setImmediate(callback[, ...args])`
699
700<!-- YAML
701added: v0.9.1
702-->
703
704<!-- type=global -->
705
706[`setImmediate`][] is described in the [timers][] section.
707
708## `setInterval(callback, delay[, ...args])`
709
710<!-- YAML
711added: v0.0.1
712-->
713
714<!-- type=global -->
715
716[`setInterval`][] is described in the [timers][] section.
717
718## `setTimeout(callback, delay[, ...args])`
719
720<!-- YAML
721added: v0.0.1
722-->
723
724<!-- type=global -->
725
726[`setTimeout`][] is described in the [timers][] section.
727
728## `structuredClone(value[, options])`
729
730<!-- YAML
731added: v17.0.0
732-->
733
734<!-- type=global -->
735
736The WHATWG [`structuredClone`][] method.
737
738## `SubtleCrypto`
739
740<!-- YAML
741added: v17.6.0
742-->
743
744> Stability: 1 - Experimental. Enable this API with the
745> [`--experimental-global-webcrypto`][] CLI flag.
746
747A browser-compatible implementation of {SubtleCrypto}. This global is available
748only if the Node.js binary was compiled with including support for the
749`node:crypto` module.
750
751## `DOMException`
752
753<!-- YAML
754added: v17.0.0
755-->
756
757<!-- type=global -->
758
759The WHATWG `DOMException` class. See [`DOMException`][] for more details.
760
761## `TextDecoder`
762
763<!-- YAML
764added: v11.0.0
765-->
766
767<!-- type=global -->
768
769The WHATWG `TextDecoder` class. See the [`TextDecoder`][] section.
770
771## Class: `TextDecoderStream`
772
773<!-- YAML
774added: v18.0.0
775-->
776
777> Stability: 1 - Experimental.
778
779A browser-compatible implementation of [`TextDecoderStream`][].
780
781## `TextEncoder`
782
783<!-- YAML
784added: v11.0.0
785-->
786
787<!-- type=global -->
788
789The WHATWG `TextEncoder` class. See the [`TextEncoder`][] section.
790
791## Class: `TextEncoderStream`
792
793<!-- YAML
794added: v18.0.0
795-->
796
797> Stability: 1 - Experimental.
798
799A browser-compatible implementation of [`TextEncoderStream`][].
800
801## Class: `TransformStream`
802
803<!-- YAML
804added: v18.0.0
805-->
806
807> Stability: 1 - Experimental.
808
809A browser-compatible implementation of [`TransformStream`][].
810
811## Class: `TransformStreamDefaultController`
812
813<!-- YAML
814added: v18.0.0
815-->
816
817> Stability: 1 - Experimental.
818
819A browser-compatible implementation of [`TransformStreamDefaultController`][].
820
821## `URL`
822
823<!-- YAML
824added: v10.0.0
825-->
826
827<!-- type=global -->
828
829The WHATWG `URL` class. See the [`URL`][] section.
830
831## `URLSearchParams`
832
833<!-- YAML
834added: v10.0.0
835-->
836
837<!-- type=global -->
838
839The WHATWG `URLSearchParams` class. See the [`URLSearchParams`][] section.
840
841## `WebAssembly`
842
843<!-- YAML
844added: v8.0.0
845-->
846
847<!-- type=global -->
848
849* {Object}
850
851The object that acts as the namespace for all W3C
852[WebAssembly][webassembly-org] related functionality. See the
853[Mozilla Developer Network][webassembly-mdn] for usage and compatibility.
854
855## Class: `WritableStream`
856
857<!-- YAML
858added: v18.0.0
859-->
860
861> Stability: 1 - Experimental.
862
863A browser-compatible implementation of [`WritableStream`][].
864
865## Class: `WritableStreamDefaultController`
866
867<!-- YAML
868added: v18.0.0
869-->
870
871> Stability: 1 - Experimental.
872
873A browser-compatible implementation of [`WritableStreamDefaultController`][].
874
875## Class: `WritableStreamDefaultWriter`
876
877<!-- YAML
878added: v18.0.0
879-->
880
881> Stability: 1 - Experimental.
882
883A browser-compatible implementation of [`WritableStreamDefaultWriter`][].
884
885[CommonJS module]: modules.md
886[ECMAScript module]: esm.md
887[Web Crypto API]: webcrypto.md
888[`--experimental-global-customevent`]: cli.md#--experimental-global-customevent
889[`--experimental-global-webcrypto`]: cli.md#--experimental-global-webcrypto
890[`--no-experimental-fetch`]: cli.md#--no-experimental-fetch
891[`AbortController`]: https://developer.mozilla.org/en-US/docs/Web/API/AbortController
892[`ByteLengthQueuingStrategy`]: webstreams.md#class-bytelengthqueuingstrategy
893[`CompressionStream`]: webstreams.md#class-compressionstream
894[`CountQueuingStrategy`]: webstreams.md#class-countqueuingstrategy
895[`CustomEvent` Web API]: https://dom.spec.whatwg.org/#customevent
896[`DOMException`]: https://developer.mozilla.org/en-US/docs/Web/API/DOMException
897[`DecompressionStream`]: webstreams.md#class-decompressionstream
898[`EventTarget` and `Event` API]: events.md#eventtarget-and-event-api
899[`MessageChannel`]: worker_threads.md#class-messagechannel
900[`MessageEvent`]: https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent/MessageEvent
901[`MessagePort`]: worker_threads.md#class-messageport
902[`ReadableByteStreamController`]: webstreams.md#class-readablebytestreamcontroller
903[`ReadableStreamBYOBReader`]: webstreams.md#class-readablestreambyobreader
904[`ReadableStreamBYOBRequest`]: webstreams.md#class-readablestreambyobrequest
905[`ReadableStreamDefaultController`]: webstreams.md#class-readablestreamdefaultcontroller
906[`ReadableStreamDefaultReader`]: webstreams.md#class-readablestreamdefaultreader
907[`ReadableStream`]: webstreams.md#class-readablestream
908[`TextDecoderStream`]: webstreams.md#class-textdecoderstream
909[`TextDecoder`]: util.md#class-utiltextdecoder
910[`TextEncoderStream`]: webstreams.md#class-textencoderstream
911[`TextEncoder`]: util.md#class-utiltextencoder
912[`TransformStreamDefaultController`]: webstreams.md#class-transformstreamdefaultcontroller
913[`TransformStream`]: webstreams.md#class-transformstream
914[`URLSearchParams`]: url.md#class-urlsearchparams
915[`URL`]: url.md#class-url
916[`WritableStreamDefaultController`]: webstreams.md#class-writablestreamdefaultcontroller
917[`WritableStreamDefaultWriter`]: webstreams.md#class-writablestreamdefaultwriter
918[`WritableStream`]: webstreams.md#class-writablestream
919[`__dirname`]: modules.md#__dirname
920[`__filename`]: modules.md#__filename
921[`abortSignal.reason`]: #abortsignalreason
922[`buffer.atob()`]: buffer.md#bufferatobdata
923[`buffer.btoa()`]: buffer.md#bufferbtoadata
924[`clearImmediate`]: timers.md#clearimmediateimmediate
925[`clearInterval`]: timers.md#clearintervaltimeout
926[`clearTimeout`]: timers.md#cleartimeouttimeout
927[`console`]: console.md
928[`exports`]: modules.md#exports
929[`fetch()`]: https://developer.mozilla.org/en-US/docs/Web/API/fetch
930[`globalThis`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis
931[`module`]: modules.md#module
932[`perf_hooks.performance`]: perf_hooks.md#perf_hooksperformance
933[`process.nextTick()`]: process.md#processnexttickcallback-args
934[`process` object]: process.md#process
935[`require()`]: modules.md#requireid
936[`setImmediate`]: timers.md#setimmediatecallback-args
937[`setInterval`]: timers.md#setintervalcallback-delay-args
938[`setTimeout`]: timers.md#settimeoutcallback-delay-args
939[`structuredClone`]: https://developer.mozilla.org/en-US/docs/Web/API/structuredClone
940[buffer section]: buffer.md
941[built-in objects]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects
942[module system documentation]: modules.md
943[timers]: timers.md
944[webassembly-mdn]: https://developer.mozilla.org/en-US/docs/WebAssembly
945[webassembly-org]: https://webassembly.org
946