Free JavaScript Course — Full Curriculum
22 comprehensive topics · 5 levels · Self-paced · Free forever
Beginner Level — JavaScript Foundations
No experience needed. You will run working JavaScript in lesson 1 and understand how the JS engine executes code by lesson 5.
-
01Introduction to JavaScript
- What is JavaScript? Its role alongside HTML and CSS
- JS engines: V8 (Chrome/Node), SpiderMonkey (Firefox), JavaScriptCore
- Browser runtime vs Node.js runtime
- Embedding JS: inline, internal <script>, external src, defer vs async
- Basic syntax: statements, semicolons, comments (// and /* */)
- Browser DevTools console — your first JS sandbox
-
02Variables and Data Types
- var, let, const — differences, scoping rules, when to use each
- Primitives: Number, String, Boolean, Null, Undefined, Symbol, BigInt
- Reference types: Objects and Arrays
- typeof operator and practical type checking
- Type coercion (implicit) vs type conversion (explicit)
- Truthy and falsy values — the 6 falsy values in JavaScript
- 03Operators and Control Flow
- 04Functions
-
05Scope, Hoisting, and Closures
- Global scope, function scope, and block scope
- Hoisting: how var and function declarations are lifted
- Temporal Dead Zone (TDZ) with let and const
- The scope chain and lexical scoping
- Closures: definition, how they form, why they matter
- Practical closure patterns: data privacy, factory functions, memoization
Intermediate Level — Core JavaScript
Objects, arrays, DOM, and events — the building blocks used in every single JavaScript project, from one-page scripts to full applications.
-
06Objects and Arrays
- Object literals, properties, methods, and shorthand syntax
- this keyword: context in methods, arrow functions, and event handlers
- Object destructuring and computed property names
- Spread (...) and rest (...) operators for objects and arrays
- Array methods: map, filter, reduce, find, findIndex, every, some, flat, flatMap
- Array destructuring, sorting, and Array.from()
-
07DOM Manipulation
- Selecting elements: querySelector, querySelectorAll, getElementById
- Reading and modifying content: textContent, innerHTML, innerText
- Modifying attributes: getAttribute, setAttribute, classList, dataset
- Creating, inserting, and removing elements: createElement, appendChild, remove
- insertAdjacentHTML and DocumentFragment for performance
- DOM traversal: parentElement, children, nextSibling, closest
-
08Events
- addEventListener and removeEventListener
- The event object: target, currentTarget, type, key, clientX/Y
- Event bubbling and capturing — the full propagation model
- Event delegation — efficient handling for dynamic content
- preventDefault and stopPropagation
- Custom events with new CustomEvent() and dispatchEvent
-
09ES6+ Modern JavaScript
- Template literals: interpolation and multiline strings
- Enhanced object literals: shorthand, computed keys, method shorthand
- Logical assignment: &&=, ||=, ??=
- ES2022+: Array.at(), Object.hasOwn(), class fields, top-level await
- ES2024/2025: Promise.withResolvers(), Object.groupBy(), Set.union/intersection
-
10Iterables, Generators, Map & Set
- The iterable protocol and Symbol.iterator
- for...of loop with strings, arrays, Maps, and Sets
- Generators (function*): yield, next(), and lazy evaluation
- Map: key-value pairs with any key type — when to use over plain objects
- Set: unique values, deduplication pattern, Set methods (ES2025)
- WeakMap and WeakSet for memory-safe object references
Advanced Level — Deep JavaScript
Closures, prototypes, the event loop, and async — the topics most tested in JavaScript interviews and that make the difference between beginner and experienced developers.
- 11Advanced Functions
- 12Prototypes and Object-Oriented Programming
-
13Asynchronous JavaScript
- Callbacks and callback hell — the problem Promises solve
- Creating Promises: new Promise(), resolve, reject
- Promise chaining: .then(), .catch(), .finally()
- Promise combinators: Promise.all(), .race(), .allSettled(), .any()
- async/await — writing async code in synchronous style
- Error handling: try/catch/finally in async functions
-
14The JavaScript Event Loop
- JavaScript's concurrency model: single-threaded, non-blocking I/O
- The call stack — how synchronous execution works
- Web APIs: setTimeout, fetch, DOM events — offloaded from the JS thread
- Microtask queue (Promises) vs macrotask queue (setTimeout)
- Event loop iteration: why microtasks always run before macrotasks
- Practical implications for async/await and Promise execution order
Professional Level — Production JavaScript
Modules, testing, performance, and design patterns — the skills used in real professional JavaScript codebases at every company.
- 15JavaScript Modules
-
16Web APIs
- Fetch API: GET, POST, headers, JSON, error handling
- localStorage and sessionStorage: store, get, remove, clear
- Geolocation API for location-aware web apps
- Intersection Observer for lazy loading and scroll animations
- Web Workers: off-thread computation for performance
- History API, URL API, and the Clipboard API
- 17Error Handling
- 18JavaScript Testing with Jest
- 19Performance Optimization
- 20JavaScript Design Patterns
Optional Level — Beyond the Browser
Introduction to the JS ecosystem beyond the browser — Node.js on the server side and the major frontend frameworks that every JS developer encounters.
- 21Introduction to Node.js
-
22Modern JavaScript Frameworks Overview
- Why frameworks exist: component model, state, virtual DOM
- React: JSX, components, hooks (useState, useEffect), Next.js
- Vue 3: Composition API, reactive state, Nuxt.js
- Angular: TypeScript-first, modules, dependency injection
- Svelte and Solid.js — the future of JS frameworks in 2026
- React vs Vue vs Angular — how to choose in 2026
No account · No credit card · Works on any device · Free forever