JavaScript
roadmap.sh: https://roadmap.sh/javascript
Suggested path through the JavaScript nodes. Each node links to its lesson when written.
Nodes
Introduction
- What is JavaScript
- History of JavaScript
- JavaScript versions (ECMAScript)
- How to run JavaScript
All about Variables
- var, let and const
- Hoisting
- Variable naming rules
- Variable scopes (global, block, lexical)
Data Types
- Primitive types
- Number
- BigInt
- String
- Boolean
- Null
- Undefined
- Symbol
- Object
- typeof operator
Type Casting
- Explicit type casting
- Implicit type casting (coercion)
- Type conversion vs coercion
Data Structures
- Keyed collections (Map, WeakMap, Set, WeakSet)
- Indexed collections (Arrays, typed arrays)
- Structured data (JSON)
Equality Comparisons
- Value comparison operators
- Equality () vs strict equality (=)
- Object.is()
Loops and Iterations
- for
- do…while
- while
- for…in
- for…of
- break / continue
Control Flow
- Conditional statements (if…else, switch)
- Exception handling (try/catch/finally)
- Error objects
Expressions and Operators
- Assignment operators
- Comparison operators
- Arithmetic operators
- Bitwise operators
- Logical operators
- BigInt operators
- String operators
- Conditional (ternary) operator
- Comma operator
- Unary operators
- Relational operators
Functions
- Defining functions
- Function parameters & default params
- Arrow functions
- IIFEs
- arguments object
- Scope and function stack (recursion)
- Built-in functions
this Keyword
- this in a method
- this in a function
- this in arrow functions
- this in event handlers
- Explicit binding (call, apply, bind)
- Function borrowing
Asynchronous JavaScript
- Event loop
- Callbacks
- Callback hell
- Promises
- async/await
- setTimeout / setInterval
- fetch API
Classes
- Class syntax
- Constructor
- Inheritance (extends, super)
- Static methods & properties
- Private fields
Iterators and Generators
- Iterators
- Generators
- Iteration protocols
Modules
- CommonJS
- ECMAScript Modules (ESM)
- Import / export
Working with APIs
- DOM APIs
- Fetch & XMLHttpRequest
- JSON parsing & serialization
Closures
- Lexical scoping
- Closures in practice
Memory Management
- Memory lifecycle
- Garbage collection
Using Browser DevTools
- Debugging issues
- Debugging memory leaks
- Debugging performance
Resources
See resources.md.
Project ideas
- Build a vanilla-JS to-do app with localStorage persistence and no frameworks.
- Write a small Promise-based fetch wrapper with retry, timeout, and cancellation.
- Implement a debounce/throttle utility library and unit-test the event-loop timing.