JavaScript — Interactive Tutorial
A complete JavaScript learning path: five levels from your first program to expert internals. Every lesson has runnable examples, a quiz, and coding challenges — all free.
- Foundations 29 of 29 lessons available
- Beginner 28 of 34 lessons available
- Intermediate 0 of 35 lessons available
- Advanced 0 of 29 lessons available
- Expert 0 of 24 lessons available
The whole path
57 of 151 lessons written
Beginner
Arrays
Objects
Built-in Objects
Functions, Deeper
Text and Modules
- Template Literals in Depth
- Regular Expressions: The Basics
- Groups, Flags and Replace
- Modules: import and export
- Project: To-Do List
Intermediate
The DOM
- What the DOM Actually Is
- Selecting Elements
- Changing Text and HTML
- Attributes and Data Attributes
- Classes and Styles
- Creating and Removing Elements
- Moving Around the Tree
- Efficient DOM Updates
Events
- Listening for Events
- Bubbling and Capturing
- Event Delegation
- Forms and preventDefault
- Keyboard and Mouse Events
- Custom Events
Asynchronous JavaScript
- setTimeout and setInterval
- Synchronous vs Asynchronous
- Callback Hell
- Promises
- Chaining Promises
- Handling Promise Failures
- async and await
- Promise.all and Friends
- Async Iteration
Talking to the Network
- fetch: Getting Data
- Sending Data
- When Requests Fail
- URLs and Query Strings
- Storing Data in the Browser
- Useful Browser APIs
Classes
- Classes
- Inheritance with extends
- Getters and Setters
- Static and Private Members
- Debouncing and Throttling
- Project: Live Weather App
Advanced
The Object Model
- Prototypes
- Prototypal Inheritance
- What class Really Compiles To
- Property Descriptors
- Freezing and Copying
Functional JavaScript
- Closures in Depth
- IIFEs and Scope Isolation
- Currying and Partial Application
- Function Composition
- Memoization
- this: The Real Rules
Iteration Protocols
- Iterators and Symbol.iterator
- Generators
- Symbols
- WeakMap and WeakSet
- Proxy and Reflect
The Runtime
- The Event Loop
- Modules in Depth
- Bundlers and Tree Shaking
- Designing for Failure
Browser Platform
- Observers
- Web Components
- Drawing with Canvas
- Web Workers
- Advanced Regular Expressions
- Internationalisation
Patterns and Practice
- Design Patterns in JavaScript
- Testing Your Code
- Project: Kanban Board
Expert
How JavaScript Runs
- Parsing, JIT and Bytecode
- Execution Contexts
- Hoisting and the TDZ
- Memory: Heap, Stack, References
- Garbage Collection
Performance
- Measuring Before Optimising
- How Engines Optimise
- Rendering Performance
- Code Splitting and Lazy Loading
- Cancellation and Backpressure
- Streams
Security
- XSS and Safe Rendering
- CORS, CSP and Origins
- Prototype Pollution
Mastery
- Metaprogramming
- Decorators and Wrapping Behaviour
- Typed Arrays and Binary Data
- WebAssembly Interop
- Types Without TypeScript
- Testing in Depth
- Debugging Like a Professional
- Designing APIs Others Enjoy
- Reading Someone Else's Code
- Capstone: A Complete Single-Page App