<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="dark light">
<meta name="description" content="node-js — Builtin reference. Keywords, globals, and core object/type methods available in the current node-js build. MIT licensed.">
<title>node-js — Builtin Reference</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;700;900&family=Share+Tech+Mono&display=swap" rel="stylesheet">
<link rel="stylesheet" href="hud-static.css">
<link rel="stylesheet" href="tutorial.css">
<style>
.tutorial-main { max-width: 76rem; }
.file-table { width:100%;border-collapse:collapse;margin:0.6rem 0;font-size:12px; }
.file-table th { background:var(--bg-secondary);color:var(--cyan);font-family:'Orbitron',sans-serif;font-size:10px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;text-align:left;padding:7px 10px;border:1px solid var(--border); }
.file-table td { padding:6px 10px;border:1px solid var(--border);color:var(--text-dim);vertical-align:middle; }
.file-table tr:hover td { background:var(--bg-hover); }
.file-table td:first-child { font-family:'Share Tech Mono',monospace;color:var(--accent-light);font-weight:600;white-space:nowrap; }
.file-table code { font-size:11px;color:var(--accent-light);background:var(--bg-primary);padding:1px 4px;border-radius:2px; }
.section-rule { border:none;border-top:1px dashed var(--border);margin:2rem 0; }
.hub-scheme-strip { border-bottom:1px dashed var(--border);background:color-mix(in srgb, var(--bg-secondary) 85%, transparent);padding:0.55rem 1.5rem 0.65rem;position:relative; }
.hub-scheme-strip-inner { max-width:76rem;margin:0 auto;display:flex;align-items:center;gap:0.85rem; }
.hub-scheme-strip .hud-scheme-label { flex:0 0 auto;font-family:'Orbitron',sans-serif;font-size:9px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--accent);text-align:left; }
.hub-scheme-strip .scheme-grid { flex:1 1 auto;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px; }
@media (max-width:720px){ .hub-scheme-strip-inner{flex-direction:column;align-items:stretch}.hub-scheme-strip .scheme-grid{grid-template-columns:repeat(2,minmax(0,1fr))} }
.docs-build-line { margin:0.35rem 0 0;font-family:'Share Tech Mono',ui-monospace,monospace;font-size:11px;color:var(--text-dim);letter-spacing:0.03em;max-width:52rem;opacity:0.75; }
</style>
</head>
<body>
<div class="app tutorial-app" id="docsApp">
<div class="crt-scanline" id="crtH" aria-hidden="true"></div>
<div class="crt-scanline-v" id="crtV" aria-hidden="true"></div>
<header class="tutorial-header">
<div class="tutorial-header-inner">
<div>
<h1 class="tutorial-brand">// NODE-JS — BUILTIN REFERENCE</h1>
<nav class="tutorial-crumbs" aria-label="Breadcrumb">
<a href="index.html">Docs</a>
<span class="sep">/</span>
<span class="current">Builtin Reference</span>
<span class="sep">/</span>
<a href="https://github.com/MenkeTechnologies/node-js" target="_blank" rel="noopener noreferrer">GitHub</a>
</nav>
<p class="docs-build-line">node-js v0.1.0 · JavaScript on fusevm · lex/parse → AST → bytecode → Cranelift JIT · JsHost object heap · binary <code>node</code> · MIT · in active development</p>
</div>
<div class="tutorial-toolbar">
<button type="button" class="btn btn-secondary" id="btnTheme" title="Toggle light/dark">Theme</button>
<button type="button" class="btn btn-secondary active" id="btnCrt" title="CRT scanline overlay">CRT</button>
<button type="button" class="btn btn-secondary active" id="btnNeon" title="Neon border pulse">Neon</button>
<a class="btn btn-secondary" href="index.html">Docs</a>
<a class="btn btn-secondary" href="https://github.com/MenkeTechnologies/node-js" target="_blank" rel="noopener noreferrer">GitHub</a>
</div>
</div>
</header>
<div class="hub-scheme-strip">
<div class="hub-scheme-strip-inner">
<span class="hud-scheme-label">// Color scheme</span>
<div class="scheme-grid" id="hudSchemeGrid"></div>
</div>
</div>
<main class="tutorial-main">
<h2 class="tutorial-title"><span class="step-hash">>_</span>BUILTIN REFERENCE</h2>
<p class="tutorial-subtitle">Every reserved keyword, global, and core object/type method the current node-js build recognizes, grouped by keyword set then globals then namespace then type. This page is generated from the corpus (<code>src/lsp.rs</code>) by the <code>gen-docs</code> binary, so it stays in sync with what the runtime actually knows about. Keywords mirror <code>parser.rs</code>; each global and method mirrors a real dispatch arm in <code>src/builtins.rs</code>.</p>
<section class="tutorial-section" id="ch-keyword">
<h2>Keyword</h2>
<article class="doc-entry" id="doc-keyword-1">
<h3><a class="doc-anchor" href="#doc-keyword-1">#</a> <code>var</code></h3>
<p>declare a function-scoped (hoisted) variable</p>
<pre><code class="lang-javascript">var x = 1; x // => 1</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-2">
<h3><a class="doc-anchor" href="#doc-keyword-2">#</a> <code>let</code></h3>
<p>declare a block-scoped variable</p>
<pre><code class="lang-javascript">let x = 2; x // => 2</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-3">
<h3><a class="doc-anchor" href="#doc-keyword-3">#</a> <code>const</code></h3>
<p>declare a block-scoped binding that cannot be reassigned</p>
<pre><code class="lang-javascript">const x = 3; x // => 3</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-4">
<h3><a class="doc-anchor" href="#doc-keyword-4">#</a> <code>function</code></h3>
<p>define a function (declaration or expression)</p>
<pre><code class="lang-javascript">function f() { return 9; } f() // => 9</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-5">
<h3><a class="doc-anchor" href="#doc-keyword-5">#</a> <code>return</code></h3>
<p>return a value from the current function (undefined if omitted)</p>
<pre><code class="lang-javascript">(function () { return 7; })() // => 7</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-6">
<h3><a class="doc-anchor" href="#doc-keyword-6">#</a> <code>if</code></h3>
<p>conditional branch on a truthy test</p>
<pre><code class="lang-javascript">let x; if (true) x = 1; x // => 1</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-7">
<h3><a class="doc-anchor" href="#doc-keyword-7">#</a> <code>else</code></h3>
<p>fallback branch of an if</p>
<pre><code class="lang-javascript">let x; if (false) x = 1; else x = 2; x // => 2</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-8">
<h3><a class="doc-anchor" href="#doc-keyword-8">#</a> <code>while</code></h3>
<p>loop while the condition is truthy</p>
<pre><code class="lang-javascript">let i = 0; while (i < 3) i++; i // => 3</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-9">
<h3><a class="doc-anchor" href="#doc-keyword-9">#</a> <code>do</code></h3>
<p>do/while loop: run the body once, then repeat while truthy</p>
<pre><code class="lang-javascript">let i = 0; do { i++; } while (i < 3); i // => 3</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-10">
<h3><a class="doc-anchor" href="#doc-keyword-10">#</a> <code>for</code></h3>
<p>C-style loop, or for/of and for/in iteration</p>
<pre><code class="lang-javascript">let s = 0; for (let i = 0; i < 3; i++) s += i; s // => 3</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-11">
<h3><a class="doc-anchor" href="#doc-keyword-11">#</a> <code>of</code></h3>
<p>iterate values of an iterable: `for (x of iterable)`</p>
<pre><code class="lang-javascript">let s = 0; for (const n of [1, 2, 3]) s += n; s // => 6</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-12">
<h3><a class="doc-anchor" href="#doc-keyword-12">#</a> <code>in</code></h3>
<p>for/in key iteration, and the property-membership operator</p>
<pre><code class="lang-javascript">"a" in { a: 1 } // => true</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-13">
<h3><a class="doc-anchor" href="#doc-keyword-13">#</a> <code>switch</code></h3>
<p>multi-way branch on a discriminant with case labels</p>
<pre><code class="lang-javascript">let x; switch (2) { case 2: x = "b"; break; } x // => 'b'</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-14">
<h3><a class="doc-anchor" href="#doc-keyword-14">#</a> <code>case</code></h3>
<p>a labeled branch inside a switch</p>
<pre><code class="lang-javascript">let x; switch (1) { case 1: x = "a"; } x // => 'a'</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-15">
<h3><a class="doc-anchor" href="#doc-keyword-15">#</a> <code>default</code></h3>
<p>the fallback branch of a switch</p>
<pre><code class="lang-javascript">let x; switch (9) { default: x = "d"; } x // => 'd'</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-16">
<h3><a class="doc-anchor" href="#doc-keyword-16">#</a> <code>break</code></h3>
<p>exit the nearest enclosing loop or switch</p>
<pre><code class="lang-javascript">let x; for (const n of [1, 2, 3]) { if (n === 2) break; x = n; } x // => 1</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-17">
<h3><a class="doc-anchor" href="#doc-keyword-17">#</a> <code>continue</code></h3>
<p>skip to the next iteration of the nearest loop</p>
<pre><code class="lang-javascript">let s = 0; for (const n of [1, 2, 3]) { if (n === 2) continue; s += n; } s // => 4</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-18">
<h3><a class="doc-anchor" href="#doc-keyword-18">#</a> <code>new</code></h3>
<p>construct an instance: `new Ctor(args)`</p>
<pre><code class="lang-javascript">new Error("boom").message // => 'boom'</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-19">
<h3><a class="doc-anchor" href="#doc-keyword-19">#</a> <code>this</code></h3>
<p>the receiver of the current call</p>
<pre><code class="lang-javascript">({ n: 5, get() { return this.n; } }).get() // => 5</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-20">
<h3><a class="doc-anchor" href="#doc-keyword-20">#</a> <code>typeof</code></h3>
<p>the type tag of a value as a string</p>
<pre><code class="lang-javascript">typeof 3 // => 'number'</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-21">
<h3><a class="doc-anchor" href="#doc-keyword-21">#</a> <code>void</code></h3>
<p>evaluate an expression and yield undefined</p>
<pre><code class="lang-javascript">void 0 // => undefined</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-22">
<h3><a class="doc-anchor" href="#doc-keyword-22">#</a> <code>delete</code></h3>
<p>remove a property from an object</p>
<pre><code class="lang-javascript">const o = { a: 1 }; delete o.a; o.a // => undefined</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-23">
<h3><a class="doc-anchor" href="#doc-keyword-23">#</a> <code>instanceof</code></h3>
<p>test whether an object was built by a constructor</p>
<pre><code class="lang-javascript">new Error("e") instanceof Error // => true</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-24">
<h3><a class="doc-anchor" href="#doc-keyword-24">#</a> <code>throw</code></h3>
<p>raise an exception value</p>
<pre><code class="lang-javascript">try { throw "x"; } catch (e) { e } // => 'x'</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-25">
<h3><a class="doc-anchor" href="#doc-keyword-25">#</a> <code>try</code></h3>
<p>run a block, routing exceptions to catch/finally</p>
<pre><code class="lang-javascript">let x; try { x = 1; } finally { x = 2; } x // => 2</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-26">
<h3><a class="doc-anchor" href="#doc-keyword-26">#</a> <code>catch</code></h3>
<p>handle an exception thrown in the try block</p>
<pre><code class="lang-javascript">try { null.x; } catch (e) { "caught" } // => 'caught'</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-27">
<h3><a class="doc-anchor" href="#doc-keyword-27">#</a> <code>finally</code></h3>
<p>block that always runs after try/catch</p>
<pre><code class="lang-javascript">let x; try { x = 1; } finally { x = 3; } x // => 3</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-28">
<h3><a class="doc-anchor" href="#doc-keyword-28">#</a> <code>true</code></h3>
<p>the boolean true literal</p>
<pre><code class="lang-javascript">true && 1 // => 1</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-29">
<h3><a class="doc-anchor" href="#doc-keyword-29">#</a> <code>false</code></h3>
<p>the boolean false literal</p>
<pre><code class="lang-javascript">false || 2 // => 2</code></pre>
</article>
<article class="doc-entry" id="doc-keyword-30">
<h3><a class="doc-anchor" href="#doc-keyword-30">#</a> <code>null</code></h3>
<p>the intentional-absence value</p>
<pre><code class="lang-javascript">null ?? 5 // => 5</code></pre>
</article>
</section>
<section class="tutorial-section" id="ch-global">
<h2>Global</h2>
<article class="doc-entry" id="doc-global-1">
<h3><a class="doc-anchor" href="#doc-global-1">#</a> <code>undefined</code></h3>
<p>the value of an unassigned binding or missing property</p>
<pre><code class="lang-javascript">typeof undefined // => 'undefined'</code></pre>
</article>
<article class="doc-entry" id="doc-global-2">
<h3><a class="doc-anchor" href="#doc-global-2">#</a> <code>NaN</code></h3>
<p>the not-a-number float; unequal to itself</p>
<pre><code class="lang-javascript">NaN === NaN // => false</code></pre>
</article>
<article class="doc-entry" id="doc-global-3">
<h3><a class="doc-anchor" href="#doc-global-3">#</a> <code>Infinity</code></h3>
<p>the positive-infinity float</p>
<pre><code class="lang-javascript">1 / 0 === Infinity // => true</code></pre>
</article>
<article class="doc-entry" id="doc-global-4">
<h3><a class="doc-anchor" href="#doc-global-4">#</a> <code>globalThis</code></h3>
<p>the global object</p>
<pre><code class="lang-javascript">typeof globalThis // => 'object'</code></pre>
</article>
<article class="doc-entry" id="doc-global-5">
<h3><a class="doc-anchor" href="#doc-global-5">#</a> <code>parseInt</code></h3>
<p>parse the leading integer of a string (optional radix)</p>
<pre><code class="lang-javascript">parseInt("42px") // => 42</code></pre>
</article>
<article class="doc-entry" id="doc-global-6">
<h3><a class="doc-anchor" href="#doc-global-6">#</a> <code>parseFloat</code></h3>
<p>parse the leading floating-point number of a string</p>
<pre><code class="lang-javascript">parseFloat("3.14abc") // => 3.14</code></pre>
</article>
<article class="doc-entry" id="doc-global-7">
<h3><a class="doc-anchor" href="#doc-global-7">#</a> <code>isNaN</code></h3>
<p>true if the coerced number is NaN</p>
<pre><code class="lang-javascript">isNaN("x") // => true</code></pre>
</article>
<article class="doc-entry" id="doc-global-8">
<h3><a class="doc-anchor" href="#doc-global-8">#</a> <code>isFinite</code></h3>
<p>true if the coerced number is finite</p>
<pre><code class="lang-javascript">isFinite(10) // => true</code></pre>
</article>
<article class="doc-entry" id="doc-global-9">
<h3><a class="doc-anchor" href="#doc-global-9">#</a> <code>String</code></h3>
<p>convert a value to its string form</p>
<pre><code class="lang-javascript">String(123) // => '123'</code></pre>
</article>
<article class="doc-entry" id="doc-global-10">
<h3><a class="doc-anchor" href="#doc-global-10">#</a> <code>Number</code></h3>
<p>convert a value to a number</p>
<pre><code class="lang-javascript">Number("3.5") // => 3.5</code></pre>
</article>
<article class="doc-entry" id="doc-global-11">
<h3><a class="doc-anchor" href="#doc-global-11">#</a> <code>Boolean</code></h3>
<p>convert a value to its truthiness</p>
<pre><code class="lang-javascript">Boolean("") // => false</code></pre>
</article>
<article class="doc-entry" id="doc-global-12">
<h3><a class="doc-anchor" href="#doc-global-12">#</a> <code>Array</code></h3>
<p>build an array from the given elements</p>
<pre><code class="lang-javascript">Array(1, 2, 3) // => [ 1, 2, 3 ]</code></pre>
</article>
<article class="doc-entry" id="doc-global-13">
<h3><a class="doc-anchor" href="#doc-global-13">#</a> <code>Error</code></h3>
<p>construct a generic error with a message</p>
<pre><code class="lang-javascript">new Error("boom").message // => 'boom'</code></pre>
</article>
<article class="doc-entry" id="doc-global-14">
<h3><a class="doc-anchor" href="#doc-global-14">#</a> <code>TypeError</code></h3>
<p>construct a type error (name is 'TypeError')</p>
<pre><code class="lang-javascript">new TypeError("bad").name // => 'TypeError'</code></pre>
</article>
<article class="doc-entry" id="doc-global-15">
<h3><a class="doc-anchor" href="#doc-global-15">#</a> <code>RangeError</code></h3>
<p>construct a range error (name is 'RangeError')</p>
<pre><code class="lang-javascript">new RangeError("oob").name // => 'RangeError'</code></pre>
</article>
</section>
<section class="tutorial-section" id="ch-console">
<h2>console</h2>
<article class="doc-entry" id="doc-console-1">
<h3><a class="doc-anchor" href="#doc-console-1">#</a> <code>console.log</code></h3>
<p>write args to stdout, space-separated, ending in a newline</p>
<pre><code class="lang-javascript">console.log("hi", 1) // prints: hi 1</code></pre>
</article>
<article class="doc-entry" id="doc-console-2">
<h3><a class="doc-anchor" href="#doc-console-2">#</a> <code>console.error</code></h3>
<p>write args to stderr</p>
<pre><code class="lang-javascript">console.error("oops") // prints oops to stderr</code></pre>
</article>
<article class="doc-entry" id="doc-console-3">
<h3><a class="doc-anchor" href="#doc-console-3">#</a> <code>console.warn</code></h3>
<p>write args to stderr (warning channel)</p>
<pre><code class="lang-javascript">console.warn("careful") // prints careful to stderr</code></pre>
</article>
<article class="doc-entry" id="doc-console-4">
<h3><a class="doc-anchor" href="#doc-console-4">#</a> <code>console.info</code></h3>
<p>write args to stdout (info channel)</p>
<pre><code class="lang-javascript">console.info("note") // prints note</code></pre>
</article>
<article class="doc-entry" id="doc-console-5">
<h3><a class="doc-anchor" href="#doc-console-5">#</a> <code>console.debug</code></h3>
<p>write args to stdout (debug channel)</p>
<pre><code class="lang-javascript">console.debug("dbg") // prints dbg</code></pre>
</article>
</section>
<section class="tutorial-section" id="ch-math">
<h2>Math</h2>
<article class="doc-entry" id="doc-math-1">
<h3><a class="doc-anchor" href="#doc-math-1">#</a> <code>Math.PI</code></h3>
<p>the ratio of a circle's circumference to its diameter</p>
<pre><code class="lang-javascript">Math.PI // => 3.141592653589793</code></pre>
</article>
<article class="doc-entry" id="doc-math-2">
<h3><a class="doc-anchor" href="#doc-math-2">#</a> <code>Math.abs</code></h3>
<p>absolute value of a number</p>
<pre><code class="lang-javascript">Math.abs(-5) // => 5</code></pre>
</article>
<article class="doc-entry" id="doc-math-3">
<h3><a class="doc-anchor" href="#doc-math-3">#</a> <code>Math.floor</code></h3>
<p>largest integer <= x</p>
<pre><code class="lang-javascript">Math.floor(3.7) // => 3</code></pre>
</article>
<article class="doc-entry" id="doc-math-4">
<h3><a class="doc-anchor" href="#doc-math-4">#</a> <code>Math.ceil</code></h3>
<p>smallest integer >= x</p>
<pre><code class="lang-javascript">Math.ceil(3.2) // => 4</code></pre>
</article>
<article class="doc-entry" id="doc-math-5">
<h3><a class="doc-anchor" href="#doc-math-5">#</a> <code>Math.round</code></h3>
<p>round to the nearest integer (ties toward +Infinity)</p>
<pre><code class="lang-javascript">Math.round(2.5) // => 3</code></pre>
</article>
<article class="doc-entry" id="doc-math-6">
<h3><a class="doc-anchor" href="#doc-math-6">#</a> <code>Math.trunc</code></h3>
<p>the integer part of x, dropping any fraction</p>
<pre><code class="lang-javascript">Math.trunc(-4.7) // => -4</code></pre>
</article>
<article class="doc-entry" id="doc-math-7">
<h3><a class="doc-anchor" href="#doc-math-7">#</a> <code>Math.sign</code></h3>
<p>the sign of x as -1, 0, or 1</p>
<pre><code class="lang-javascript">Math.sign(-8) // => -1</code></pre>
</article>
<article class="doc-entry" id="doc-math-8">
<h3><a class="doc-anchor" href="#doc-math-8">#</a> <code>Math.sqrt</code></h3>
<p>square root of x</p>
<pre><code class="lang-javascript">Math.sqrt(16) // => 4</code></pre>
</article>
<article class="doc-entry" id="doc-math-9">
<h3><a class="doc-anchor" href="#doc-math-9">#</a> <code>Math.cbrt</code></h3>
<p>cube root of x</p>
<pre><code class="lang-javascript">Math.cbrt(27) // => 3</code></pre>
</article>
<article class="doc-entry" id="doc-math-10">
<h3><a class="doc-anchor" href="#doc-math-10">#</a> <code>Math.pow</code></h3>
<p>x raised to the power y</p>
<pre><code class="lang-javascript">Math.pow(2, 10) // => 1024</code></pre>
</article>
<article class="doc-entry" id="doc-math-11">
<h3><a class="doc-anchor" href="#doc-math-11">#</a> <code>Math.exp</code></h3>
<p>e raised to the power x</p>
<pre><code class="lang-javascript">Math.exp(0) // => 1</code></pre>
</article>
<article class="doc-entry" id="doc-math-12">
<h3><a class="doc-anchor" href="#doc-math-12">#</a> <code>Math.log</code></h3>
<p>natural logarithm of x</p>
<pre><code class="lang-javascript">Math.log(1) // => 0</code></pre>
</article>
<article class="doc-entry" id="doc-math-13">
<h3><a class="doc-anchor" href="#doc-math-13">#</a> <code>Math.max</code></h3>
<p>largest of the arguments</p>
<pre><code class="lang-javascript">Math.max(3, 1, 2) // => 3</code></pre>
</article>
<article class="doc-entry" id="doc-math-14">
<h3><a class="doc-anchor" href="#doc-math-14">#</a> <code>Math.min</code></h3>
<p>smallest of the arguments</p>
<pre><code class="lang-javascript">Math.min(3, 1, 2) // => 1</code></pre>
</article>
<article class="doc-entry" id="doc-math-15">
<h3><a class="doc-anchor" href="#doc-math-15">#</a> <code>Math.hypot</code></h3>
<p>the square root of the sum of squares of the arguments</p>
<pre><code class="lang-javascript">Math.hypot(3, 4) // => 5</code></pre>
</article>
<article class="doc-entry" id="doc-math-16">
<h3><a class="doc-anchor" href="#doc-math-16">#</a> <code>Math.sin</code></h3>
<p>sine of x (radians)</p>
<pre><code class="lang-javascript">Math.sin(0) // => 0</code></pre>
</article>
<article class="doc-entry" id="doc-math-17">
<h3><a class="doc-anchor" href="#doc-math-17">#</a> <code>Math.cos</code></h3>
<p>cosine of x (radians)</p>
<pre><code class="lang-javascript">Math.cos(0) // => 1</code></pre>
</article>
<article class="doc-entry" id="doc-math-18">
<h3><a class="doc-anchor" href="#doc-math-18">#</a> <code>Math.tan</code></h3>
<p>tangent of x (radians)</p>
<pre><code class="lang-javascript">Math.tan(0) // => 0</code></pre>
</article>
<article class="doc-entry" id="doc-math-19">
<h3><a class="doc-anchor" href="#doc-math-19">#</a> <code>Math.random</code></h3>
<p>a pseudo-random float in [0, 1)</p>
<pre><code class="lang-javascript">Math.random() < 1 // => true</code></pre>
</article>
</section>
<section class="tutorial-section" id="ch-json">
<h2>JSON</h2>
<article class="doc-entry" id="doc-json-1">
<h3><a class="doc-anchor" href="#doc-json-1">#</a> <code>JSON.stringify</code></h3>
<p>serialize a value to a JSON string</p>
<pre><code class="lang-javascript">JSON.stringify({ a: 1 }) // => '{"a":1}'</code></pre>
</article>
<article class="doc-entry" id="doc-json-2">
<h3><a class="doc-anchor" href="#doc-json-2">#</a> <code>JSON.parse</code></h3>
<p>parse a JSON string into a value</p>
<pre><code class="lang-javascript">JSON.parse("[1,2]") // => [ 1, 2 ]</code></pre>
</article>
</section>
<section class="tutorial-section" id="ch-object">
<h2>Object</h2>
<article class="doc-entry" id="doc-object-1">
<h3><a class="doc-anchor" href="#doc-object-1">#</a> <code>Object.keys</code></h3>
<p>an array of an object's own enumerable keys</p>
<pre><code class="lang-javascript">Object.keys({ a: 1, b: 2 }) // => [ 'a', 'b' ]</code></pre>
</article>
<article class="doc-entry" id="doc-object-2">
<h3><a class="doc-anchor" href="#doc-object-2">#</a> <code>Object.values</code></h3>
<p>an array of an object's own enumerable values</p>
<pre><code class="lang-javascript">Object.values({ a: 1, b: 2 }) // => [ 1, 2 ]</code></pre>
</article>
<article class="doc-entry" id="doc-object-3">
<h3><a class="doc-anchor" href="#doc-object-3">#</a> <code>Object.entries</code></h3>
<p>an array of [key, value] pairs</p>
<pre><code class="lang-javascript">Object.entries({ a: 1 }) // => [ [ 'a', 1 ] ]</code></pre>
</article>
<article class="doc-entry" id="doc-object-4">
<h3><a class="doc-anchor" href="#doc-object-4">#</a> <code>Object.assign</code></h3>
<p>copy source properties onto a target object (in place)</p>
<pre><code class="lang-javascript">Object.assign({ a: 1 }, { b: 2 }) // => { a: 1, b: 2 }</code></pre>
</article>
<article class="doc-entry" id="doc-object-5">
<h3><a class="doc-anchor" href="#doc-object-5">#</a> <code>Object.fromEntries</code></h3>
<p>build an object from [key, value] pairs</p>
<pre><code class="lang-javascript">Object.fromEntries([["a", 1]]) // => { a: 1 }</code></pre>
</article>
<article class="doc-entry" id="doc-object-6">
<h3><a class="doc-anchor" href="#doc-object-6">#</a> <code>Object.freeze</code></h3>
<p>make an object immutable and return it</p>
<pre><code class="lang-javascript">Object.freeze({ a: 1 }).a // => 1</code></pre>
</article>
</section>
<section class="tutorial-section" id="ch-number">
<h2>Number</h2>
<article class="doc-entry" id="doc-number-1">
<h3><a class="doc-anchor" href="#doc-number-1">#</a> <code>Number.isInteger</code></h3>
<p>true if the value is an integer number</p>
<pre><code class="lang-javascript">Number.isInteger(3) // => true</code></pre>
</article>
<article class="doc-entry" id="doc-number-2">
<h3><a class="doc-anchor" href="#doc-number-2">#</a> <code>Number.isNaN</code></h3>
<p>true only if the value is exactly NaN (no coercion)</p>
<pre><code class="lang-javascript">Number.isNaN(NaN) // => true</code></pre>
</article>
<article class="doc-entry" id="doc-number-3">
<h3><a class="doc-anchor" href="#doc-number-3">#</a> <code>Number.isFinite</code></h3>
<p>true if the value is a finite number (no coercion)</p>
<pre><code class="lang-javascript">Number.isFinite(10) // => true</code></pre>
</article>
<article class="doc-entry" id="doc-number-4">
<h3><a class="doc-anchor" href="#doc-number-4">#</a> <code>Number.isSafeInteger</code></h3>
<p>true if the value is an integer within +/-2^53-1</p>
<pre><code class="lang-javascript">Number.isSafeInteger(2 ** 53) // => false</code></pre>
</article>
<article class="doc-entry" id="doc-number-5">
<h3><a class="doc-anchor" href="#doc-number-5">#</a> <code>Number.parseInt</code></h3>
<p>same as the global parseInt</p>
<pre><code class="lang-javascript">Number.parseInt("20", 10) // => 20</code></pre>
</article>
<article class="doc-entry" id="doc-number-6">
<h3><a class="doc-anchor" href="#doc-number-6">#</a> <code>Number.parseFloat</code></h3>
<p>same as the global parseFloat</p>
<pre><code class="lang-javascript">Number.parseFloat("1.5") // => 1.5</code></pre>
</article>
</section>
<section class="tutorial-section" id="ch-string-static">
<h2>String static</h2>
<article class="doc-entry" id="doc-string-static-1">
<h3><a class="doc-anchor" href="#doc-string-static-1">#</a> <code>String.fromCharCode</code></h3>
<p>a string built from the given UTF-16 code units</p>
<pre><code class="lang-javascript">String.fromCharCode(65, 66) // => 'AB'</code></pre>
</article>
</section>
<section class="tutorial-section" id="ch-array-static">
<h2>Array static</h2>
<article class="doc-entry" id="doc-array-static-1">
<h3><a class="doc-anchor" href="#doc-array-static-1">#</a> <code>Array.isArray</code></h3>
<p>true if the value is an array</p>
<pre><code class="lang-javascript">Array.isArray([1, 2]) // => true</code></pre>
</article>
<article class="doc-entry" id="doc-array-static-2">
<h3><a class="doc-anchor" href="#doc-array-static-2">#</a> <code>Array.from</code></h3>
<p>build an array from an iterable or array-like</p>
<pre><code class="lang-javascript">Array.from("ab") // => [ 'a', 'b' ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-static-3">
<h3><a class="doc-anchor" href="#doc-array-static-3">#</a> <code>Array.of</code></h3>
<p>build an array from the given arguments</p>
<pre><code class="lang-javascript">Array.of(1, 2, 3) // => [ 1, 2, 3 ]</code></pre>
</article>
</section>
<section class="tutorial-section" id="ch-array-method">
<h2>Array method</h2>
<article class="doc-entry" id="doc-array-method-1">
<h3><a class="doc-anchor" href="#doc-array-method-1">#</a> <code>push</code></h3>
<p>append items to the end; returns the new length</p>
<pre><code class="lang-javascript">const a = [1]; a.push(2); a // => [ 1, 2 ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-2">
<h3><a class="doc-anchor" href="#doc-array-method-2">#</a> <code>pop</code></h3>
<p>remove and return the last item</p>
<pre><code class="lang-javascript">[1, 2, 3].pop() // => 3</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-3">
<h3><a class="doc-anchor" href="#doc-array-method-3">#</a> <code>shift</code></h3>
<p>remove and return the first item</p>
<pre><code class="lang-javascript">[1, 2, 3].shift() // => 1</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-4">
<h3><a class="doc-anchor" href="#doc-array-method-4">#</a> <code>unshift</code></h3>
<p>prepend items; returns the new length</p>
<pre><code class="lang-javascript">const a = [2]; a.unshift(1); a // => [ 1, 2 ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-5">
<h3><a class="doc-anchor" href="#doc-array-method-5">#</a> <code>map</code></h3>
<p>a new array of the results of calling fn on each item</p>
<pre><code class="lang-javascript">[1, 2, 3].map(x => x * 2) // => [ 2, 4, 6 ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-6">
<h3><a class="doc-anchor" href="#doc-array-method-6">#</a> <code>filter</code></h3>
<p>a new array of the items for which fn is truthy</p>
<pre><code class="lang-javascript">[1, 2, 3, 4].filter(x => x % 2 === 0) // => [ 2, 4 ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-7">
<h3><a class="doc-anchor" href="#doc-array-method-7">#</a> <code>forEach</code></h3>
<p>call fn on each item for effect; returns undefined</p>
<pre><code class="lang-javascript">let s = 0; [1, 2, 3].forEach(x => s += x); s // => 6</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-8">
<h3><a class="doc-anchor" href="#doc-array-method-8">#</a> <code>reduce</code></h3>
<p>fold the array to a single value with an accumulator</p>
<pre><code class="lang-javascript">[1, 2, 3].reduce((a, b) => a + b, 0) // => 6</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-9">
<h3><a class="doc-anchor" href="#doc-array-method-9">#</a> <code>join</code></h3>
<p>concatenate items into a string with a separator</p>
<pre><code class="lang-javascript">[1, 2, 3].join("-") // => '1-2-3'</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-10">
<h3><a class="doc-anchor" href="#doc-array-method-10">#</a> <code>slice</code></h3>
<p>a shallow copy of a [start, end) sub-range</p>
<pre><code class="lang-javascript">[1, 2, 3, 4].slice(1, 3) // => [ 2, 3 ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-11">
<h3><a class="doc-anchor" href="#doc-array-method-11">#</a> <code>splice</code></h3>
<p>remove/insert items in place; returns the removed items</p>
<pre><code class="lang-javascript">const a = [1, 2, 3]; a.splice(1, 1); a // => [ 1, 3 ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-12">
<h3><a class="doc-anchor" href="#doc-array-method-12">#</a> <code>concat</code></h3>
<p>a new array joining this array with more arrays/values</p>
<pre><code class="lang-javascript">[1].concat([2, 3]) // => [ 1, 2, 3 ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-13">
<h3><a class="doc-anchor" href="#doc-array-method-13">#</a> <code>indexOf</code></h3>
<p>index of the first matching item, or -1</p>
<pre><code class="lang-javascript">[1, 2, 3].indexOf(2) // => 1</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-14">
<h3><a class="doc-anchor" href="#doc-array-method-14">#</a> <code>lastIndexOf</code></h3>
<p>index of the last matching item, or -1</p>
<pre><code class="lang-javascript">[1, 2, 1].lastIndexOf(1) // => 2</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-15">
<h3><a class="doc-anchor" href="#doc-array-method-15">#</a> <code>includes</code></h3>
<p>true if the array contains the value</p>
<pre><code class="lang-javascript">[1, 2, 3].includes(2) // => true</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-16">
<h3><a class="doc-anchor" href="#doc-array-method-16">#</a> <code>find</code></h3>
<p>the first item for which fn is truthy, else undefined</p>
<pre><code class="lang-javascript">[1, 2, 3].find(x => x > 1) // => 2</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-17">
<h3><a class="doc-anchor" href="#doc-array-method-17">#</a> <code>findIndex</code></h3>
<p>the index of the first item for which fn is truthy, else -1</p>
<pre><code class="lang-javascript">[1, 2, 3].findIndex(x => x > 1) // => 1</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-18">
<h3><a class="doc-anchor" href="#doc-array-method-18">#</a> <code>some</code></h3>
<p>true if fn is truthy for any item</p>
<pre><code class="lang-javascript">[1, 2, 3].some(x => x > 2) // => true</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-19">
<h3><a class="doc-anchor" href="#doc-array-method-19">#</a> <code>every</code></h3>
<p>true if fn is truthy for every item</p>
<pre><code class="lang-javascript">[1, 2, 3].every(x => x > 0) // => true</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-20">
<h3><a class="doc-anchor" href="#doc-array-method-20">#</a> <code>reverse</code></h3>
<p>reverse the array in place</p>
<pre><code class="lang-javascript">[1, 2, 3].reverse() // => [ 3, 2, 1 ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-21">
<h3><a class="doc-anchor" href="#doc-array-method-21">#</a> <code>sort</code></h3>
<p>sort in place (default: by string order)</p>
<pre><code class="lang-javascript">[3, 1, 2].sort() // => [ 1, 2, 3 ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-22">
<h3><a class="doc-anchor" href="#doc-array-method-22">#</a> <code>flat</code></h3>
<p>a new array with sub-arrays flattened one level (or by depth)</p>
<pre><code class="lang-javascript">[1, [2, [3]]].flat() // => [ 1, 2, [ 3 ] ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-23">
<h3><a class="doc-anchor" href="#doc-array-method-23">#</a> <code>flatMap</code></h3>
<p>map each item then flatten the result one level</p>
<pre><code class="lang-javascript">[1, 2].flatMap(x => [x, x]) // => [ 1, 1, 2, 2 ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-24">
<h3><a class="doc-anchor" href="#doc-array-method-24">#</a> <code>fill</code></h3>
<p>overwrite a range with a value in place</p>
<pre><code class="lang-javascript">[1, 2, 3].fill(0) // => [ 0, 0, 0 ]</code></pre>
</article>
<article class="doc-entry" id="doc-array-method-25">
<h3><a class="doc-anchor" href="#doc-array-method-25">#</a> <code>at</code></h3>
<p>the item at an index, allowing negative indexing</p>
<pre><code class="lang-javascript">[1, 2, 3].at(-1) // => 3</code></pre>
</article>
</section>
<section class="tutorial-section" id="ch-string-method">
<h2>String method</h2>
<article class="doc-entry" id="doc-string-method-1">
<h3><a class="doc-anchor" href="#doc-string-method-1">#</a> <code>toUpperCase</code></h3>
<p>a copy with all cased characters uppercased</p>
<pre><code class="lang-javascript">"abc".toUpperCase() // => 'ABC'</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-2">
<h3><a class="doc-anchor" href="#doc-string-method-2">#</a> <code>toLowerCase</code></h3>
<p>a copy with all cased characters lowercased</p>
<pre><code class="lang-javascript">"ABC".toLowerCase() // => 'abc'</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-3">
<h3><a class="doc-anchor" href="#doc-string-method-3">#</a> <code>charAt</code></h3>
<p>the character at an index</p>
<pre><code class="lang-javascript">"hi".charAt(1) // => 'i'</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-4">
<h3><a class="doc-anchor" href="#doc-string-method-4">#</a> <code>charCodeAt</code></h3>
<p>the UTF-16 code unit at an index</p>
<pre><code class="lang-javascript">"A".charCodeAt(0) // => 65</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-5">
<h3><a class="doc-anchor" href="#doc-string-method-5">#</a> <code>codePointAt</code></h3>
<p>the Unicode code point at an index</p>
<pre><code class="lang-javascript">"A".codePointAt(0) // => 65</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-6">
<h3><a class="doc-anchor" href="#doc-string-method-6">#</a> <code>slice</code></h3>
<p>a substring over a [start, end) range (negatives allowed)</p>
<pre><code class="lang-javascript">"hello".slice(1, 3) // => 'el'</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-7">
<h3><a class="doc-anchor" href="#doc-string-method-7">#</a> <code>substring</code></h3>
<p>a substring over a [start, end) range (no negatives)</p>
<pre><code class="lang-javascript">"hello".substring(0, 2) // => 'he'</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-8">
<h3><a class="doc-anchor" href="#doc-string-method-8">#</a> <code>split</code></h3>
<p>an array of substrings split on a separator</p>
<pre><code class="lang-javascript">"a,b,c".split(",") // => [ 'a', 'b', 'c' ]</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-9">
<h3><a class="doc-anchor" href="#doc-string-method-9">#</a> <code>trim</code></h3>
<p>a copy with leading and trailing whitespace removed</p>
<pre><code class="lang-javascript">" hi ".trim() // => 'hi'</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-10">
<h3><a class="doc-anchor" href="#doc-string-method-10">#</a> <code>trimStart</code></h3>
<p>a copy with leading whitespace removed</p>
<pre><code class="lang-javascript">" hi".trimStart() // => 'hi'</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-11">
<h3><a class="doc-anchor" href="#doc-string-method-11">#</a> <code>trimEnd</code></h3>
<p>a copy with trailing whitespace removed</p>
<pre><code class="lang-javascript">"hi ".trimEnd() // => 'hi'</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-12">
<h3><a class="doc-anchor" href="#doc-string-method-12">#</a> <code>replace</code></h3>
<p>a copy with the first match of a substring replaced</p>
<pre><code class="lang-javascript">"aaa".replace("a", "b") // => 'baa'</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-13">
<h3><a class="doc-anchor" href="#doc-string-method-13">#</a> <code>replaceAll</code></h3>
<p>a copy with every match of a substring replaced</p>
<pre><code class="lang-javascript">"aaa".replaceAll("a", "b") // => 'bbb'</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-14">
<h3><a class="doc-anchor" href="#doc-string-method-14">#</a> <code>repeat</code></h3>
<p>the string repeated n times</p>
<pre><code class="lang-javascript">"ab".repeat(3) // => 'ababab'</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-15">
<h3><a class="doc-anchor" href="#doc-string-method-15">#</a> <code>startsWith</code></h3>
<p>true if the string starts with the prefix</p>
<pre><code class="lang-javascript">"hello".startsWith("he") // => true</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-16">
<h3><a class="doc-anchor" href="#doc-string-method-16">#</a> <code>endsWith</code></h3>
<p>true if the string ends with the suffix</p>
<pre><code class="lang-javascript">"hello".endsWith("lo") // => true</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-17">
<h3><a class="doc-anchor" href="#doc-string-method-17">#</a> <code>padStart</code></h3>
<p>pad on the left to a target length</p>
<pre><code class="lang-javascript">"5".padStart(3, "0") // => '005'</code></pre>
</article>
<article class="doc-entry" id="doc-string-method-18">
<h3><a class="doc-anchor" href="#doc-string-method-18">#</a> <code>padEnd</code></h3>
<p>pad on the right to a target length</p>
<pre><code class="lang-javascript">"5".padEnd(3, "0") // => '500'</code></pre>
</article>
</section>
<section class="tutorial-section" id="ch-number-method">
<h2>Number method</h2>
<article class="doc-entry" id="doc-number-method-1">
<h3><a class="doc-anchor" href="#doc-number-method-1">#</a> <code>toFixed</code></h3>
<p>a fixed-point string with n digits after the decimal point</p>
<pre><code class="lang-javascript">(3.14159).toFixed(2) // => '3.14'</code></pre>
</article>
<article class="doc-entry" id="doc-number-method-2">
<h3><a class="doc-anchor" href="#doc-number-method-2">#</a> <code>toPrecision</code></h3>
<p>a string with n significant digits</p>
<pre><code class="lang-javascript">(123.456).toPrecision(4) // => '123.5'</code></pre>
</article>
<article class="doc-entry" id="doc-number-method-3">
<h3><a class="doc-anchor" href="#doc-number-method-3">#</a> <code>toString</code></h3>
<p>the string form of a number in an optional radix</p>
<pre><code class="lang-javascript">(255).toString(16) // => 'ff'</code></pre>
</article>
</section>
<section class="tutorial-section">
<h2>More</h2>
<ul>
<li><strong>Docs</strong> — <a href="index.html">index.html</a> (overview, architecture, examples)</li>
<li><strong>Engineering report</strong> — <a href="report.html">report.html</a> (value model, status, dependencies)</li>
<li><strong>Source</strong> — <a href="https://github.com/MenkeTechnologies/node-js">github.com/MenkeTechnologies/node-js</a></li>
</ul>
</section>
</main>
</div>
<script src="hud-theme.js"></script>
</body>
</html>