Js js
A complete quiz-based curriculum covering JavaScript from first principles to expert-level, production-grade knowledge. Every quiz is self-contained — read the explanations, not just the answers, to build a full mental model of the language.
Part 1 — Foundations
9 topicsIntroduction & Setup
Where JS runs, engines, and the ECMAScript version treadmill — context for every quirk that follows.
Variables & Data Types
var/let/const scoping and the primitive vs. reference type split drive most beginner bugs.
Operators & Expressions
== vs ===, coercion rules, and operator precedence are classic interview traps.
Control Flow
Truthy/falsy edge cases and loop scoping (let vs var in closures) trip up even experienced devs.
Functions & Scope
Hoisting, the TDZ, and function vs. arrow semantics underpin everything else in JS.
Strings & Template Literals
Immutability, Unicode surrogate pairs, and tagged templates are common gotchas in string handling.
Objects & Properties
Property descriptors, shallow vs. deep copies, and key coercion shape real-world bugs.
Arrays & Array Methods
Mutating vs. non-mutating methods and sparse arrays cause subtle production issues.
Destructuring & Spread
Default values, nested patterns, and spread vs. rest are everywhere in modern codebases.
Part 2 — Core Language Mastery
9 topicsClasses & Prototypes
Classes are sugar over the prototype chain — understanding both explains inheritance bugs.
The this Keyword
this binding rules are the single most-misunderstood part of JavaScript.
Closures & Lexical Scope
Closures power memoization, private state, and are a top source of loop-variable bugs.
Higher-Order Functions
map/filter/reduce composition is the backbone of idiomatic modern JS.
Modules
ESM vs. CommonJS interop and circular imports are frequent real-world pain points.
Callbacks & the Event Loop
Microtask vs. macrotask ordering explains why Promise.then beats setTimeout(0).
Promises
Chaining, error propagation, and Promise.all vs. allSettled are daily async concerns.
Async/Await
Await ordering, parallel vs. sequential awaits, and try/catch scope are frequent bugs.
Error Handling
Custom errors, finally semantics, and swallowed rejections shape reliability.
Part 3 — Browser & Application Layer
5 topicsThe DOM
Reflow/repaint costs and live vs. static node lists affect UI performance.
Events
Bubbling, capturing, and delegation are essential for building efficient UIs.
Web Storage & APIs
localStorage quotas, synchronous cost, and Fetch API quirks matter in production.
Timers & Scheduling
setTimeout drift, requestAnimationFrame, and debounce/throttle are UI staples.
Functional Programming
Currying, composition, and immutability patterns are increasingly idiomatic in JS.
Part 4 — Advanced & Professional
7 topicsDesign Patterns
Module, singleton, observer, and factory patterns recur across every large JS codebase.
Testing
Mocking, spies, and async test pitfalls determine whether a test suite is trustworthy.
Performance & Optimization
Memory leaks, debouncing, and V8 optimization quirks matter at scale.
Tooling & Build Systems
Bundlers, tree-shaking, and source maps are unavoidable in modern JS delivery.
TypeScript Essentials
Structural typing and type narrowing are now baseline JS-adjacent knowledge.
Security
XSS, prototype pollution, and unsafe eval usage are the most common JS vulnerabilities.
Exercises & Projects (Capstone)
A mixed-review capstone pulling together async, closures, this, and performance.