Missing JavaScript Terms — AI Knowledge-Base Gap Analysis
Missing JavaScript Terms — AI Knowledge-Base Gap Analysis
Purpose of this file. The current curriculum in terms/level_01 … terms/level_10
defines 117 terms (see _meta/javascript_terms_zero_to_hero.md). Reviewing it as a
junior engineer trying to learn JavaScript from these files alone, I hit gaps:
concepts that the existing docs use, assume, or reference in prose but never define as
their own term. This file catalogs those gaps so an AI can generate the missing term
docs and make the knowledge base self-contained.
How to read this file.
Section 1 — the critical gaps (concepts used everywhere but never taught).
Section 2 — the full list of missing terms, grouped by the level they belong to.
Each row is shaped to drop straight into the term-doc template: it names the
prerequisites and related terms so the ## 1. Prerequisites and
## 7. Related Terms sections can be filled in automatically.
Section 3 — the relationship map (dependency graph) between missing terms and
existing terms.
Section 4 — suggested generation priority.
Evidence method. "Gap" = concept appears in prose/code of ≥1 existing term file but
has no dedicated terms/level_XX/<term>.md. Counts below are files that mention the
concept (found via grep -rl across terms/).
1. Critical Gaps (used pervasively, never defined)
These block comprehension the most because existing lessons rely on them without explanation.
Gap
Evidence (files mentioning it)
Why it blocks learning
Strict vs Loose Equality (=== / ==)
=== in ~29 files; technology_context.mdmandates===
The most-used operator in every code sample is never defined. A learner sees === everywhere but no doc explains why not ==, or what coercion == triggers.
Error Handling (try / catch / finally)
try in ~43 files, catch in ~11, throw in ~31; technology_context.md requires try...catch in async code
The guidelines demand error handling, and .catch() (Term #72) implies rejection handling, but the try/catch/finally statement and the throw mechanism are never taught.
Error object & error types
referenced alongside throw/catch
TypeError, RangeError, custom errors, and error.message are used in examples but undefined.
Timers (setTimeout / setInterval / clearTimeout)
setTimeout in ~13 files, setInterval in ~3
The Macrotask Queue (Term #76), Debounce (#106), and Throttle (#107) docs all depend on setTimeout, yet it has no term of its own.
JSON / JSON.stringify / JSON.parse
~7 files
Fundamental for fetch responses (Term #74) and data handling; used but never defined.
Reference vs Value (copy semantics)
implied across Object/Array/closure docs
Junior devs' #1 confusion. Objects/arrays are "copied by reference"; primitives "by value" — assumed by spread, Object.assign, closures, but never stated.
window / document / BOM
window in ~19 files
The DOM docs assume a global window/document host object; the Browser Object Model is never introduced.
Loops and if conditions rely on operators that have no foundational term.
2. Missing Terms by Level
Legend for Category: Language Core / Browser API / DOM / Ecosystem / Tooling
(per technology_context.md). Prereqs and Related reference existing terms by
name (see zero-to-hero list) or other missing terms (marked with 🆕).
Level 1 — Foundations (operators & number model)
Proposed Term
One-line description
Category
Prerequisites
Related
Operator [DONE]
Symbol that performs an operation on operands (umbrella concept).
Language Core
Expression, Statement
Arithmetic/Comparison/Assignment Operators
Arithmetic Operators [DONE]
+ - * / % ** for math on numbers.
Language Core
Number, Operator
Type Coercion, NaN
Assignment Operators [DONE]
=, +=, -=, *=, … store/update values.
Language Core
Variable, Operator
let, const
Comparison Operators [DONE]
> < >= <= compare two values, yielding a Boolean.
Language Core
Boolean, Operator
Strict/Loose Equality, if/else
Strict vs Loose Equality (=== vs ==) [DONE]
Identity comparison with/without type coercion; !==/!=.
Language Core
Type Coercion, Boolean
Comparison Operators, Truthy/Falsy, NaN
Increment / Decrement (++ / --) [DONE]
Add/subtract one; prefix vs postfix.
Language Core
Number, Variable
for Loop, Arithmetic Operators
Ternary / Conditional Operator (? :) [DONE]
Inline one-expression if/else.
Language Core
if/else, Expression
Truthy/Falsy, Logical Operators
Operator Precedence & Associativity [DONE]
The order operators evaluate in an expression.
Language Core
Operator, Expression
Arithmetic Operators
NaN [DONE]
"Not-a-Number"; result of invalid math; not equal to itself.
Language Core
Number, Type Coercion
Strict Equality, parseInt
Infinity / -Infinity [DONE]
Numeric value beyond the max representable number.
Language Core
Number
NaN, Arithmetic Operators
BigInt [DONE]
Primitive for arbitrarily large integers (123n).
Language Core
Number, Primitive Types
typeof
Dynamic & Weak Typing [DONE]
Types attach to values at runtime; JS auto-coerces.
Language Core
Type Coercion, typeof
Primitive Types, TypeScript
Automatic Semicolon Insertion (ASI) [DONE]
How/when JS inserts missing semicolons; pitfalls.
Language Core
Statement
comments
Level 2 — Control Flow, Built-in Objects & Data Access
Proposed Term
One-line description
Category
Prerequisites
Related
break / continue [DONE]
Exit a loop early / skip to next iteration.
Language Core
for Loop, while Loop
switch, 🆕 Labeled Statements
Property Access (dot vs bracket notation) [DONE]
obj.key vs obj["key"]; dynamic keys.
Language Core
Object, Property
🆕 Computed Property Names, Method
Array Index & .length [DONE]
Zero-based positional access and size of an array.
Language Core
Array
for Loop, 🆕 Array mutating methods
String Methods [DONE]
slice, split, toUpperCase, includes, trim, …
Language Core
String
Template Literals, 🆕 Array Methods
Number Methods & Parsing [DONE]
parseInt, parseFloat, toFixed, Number().
Language Core
Number, Type Coercion
NaN, Math object
Math object [DONE]
Built-in math utilities (round, random, max…).
Language Core
Number
Number Methods
Date object [DONE]
Representing and manipulating dates/times.
Language Core
Object
🆕 Timers, JSON
Level 3 — Functions & Scope
Proposed Term
One-line description
Category
Prerequisites
Related
Recursion [DONE]
A function that calls itself until a base case.
Language Core
Function, return Statement, Call Stack
Higher-Order Function, 🆕 Tail Call Optimization
Lexical (Static) Scope / Environment [DONE]
Scope determined by where code is written, not called.
Language Core
Scope, Block Scope
Closure, Hoisting, Arrow Function
Pure Function & Side Effects [DONE]
Output depends only on input; no external mutation.
Language Core
Function, parameters
🆕 Immutability, 🆕 Functional Programming
Anonymous Function [DONE]
A function without a name (often a callback/expression).
Language Core
Function Expression, Callback Function
Arrow Function, IIFE
call / apply / bind [DONE] (relocated to Level 7)
Explicitly set a function's this and arguments.
Language Core
Function, Arguments
this Keyword, Reference vs Value
Default this Binding Rules [DONE] (relocated to Level 7)
CommonJS vs ESM; Runtime vs Compile Time; Transpiler vs Compiler; specific bundlers; Tree Shaking/Minification/Source Maps; ESLint/Prettier; SemVer/lockfiles; Deno/Bun; DevTools; Unit Testing; Framework vs Library; Web APIs vs language; globalThis
5. Notes for the Generating AI
Follow the existing template. Every new file must mirror the 8-section structure used in
terms/level_XX/*.md (Prerequisites → Term Category → Environment Context → Explanation
[Design Motivation / Reality Metaphor / Code Examples] → Common Mistakes → Practice Exercises
→ Related Terms → Key Takeaways) and obey _meta/technology_context.md (TC39 storytelling
persona; const-first, ===-only, semicolons, try/catch in async code).
Wire the cross-links. Use the Prerequisites and Related columns in Section 2 to
populate ## 1. Prerequisites and ## 7. Related Terms with correct relative paths
(../level_XX/<term>.md). When a new term links to another new term, create both.
Renumber intentionally. The zero-to-hero list ends at #117; either append new numbers or
switch to level-relative numbering — decide once and stay consistent.
Update the trackers. After generating, add each new term to
_meta/javascript_terms_zero_to_hero.md and remove it from this gap list (or mark it done),
mirroring how _meta/missing_terms.md records already-closed gaps.
Environment tags. DOM/BOM/Web Storage/Timers/Workers = Browser Only; require/CommonJS
and most tooling = Node.js / Server Only; language-core terms = Universal.