JavaScript
Courses, references, and deep dives for the JavaScript language itself. Part of the Frontend Roadmap. See also Tooling for package managers, bundlers, linters, and the runtimes that execute it, TypeScript for static types on top of the language, and Security for XSS, tokens, and the JWT tooling that used to live here.
Learn
- MDN JavaScript Guide — Walkthrough of the whole language, from grammar and types to modules and iterators.
- javascript.info — The Modern JavaScript Tutorial, taken from first script to browser APIs.
- Learn JS — Modern JavaScript tutorial. [ru]
- MDN Dynamic Scripting — MDN’s JavaScript learning path, from first variable to fetching data. [beginner]
- JavaScript Algorithms and Data Structures — Interactive JavaScript certification from freeCodeCamp. [beginner]
- Eloquent JavaScript — Book that teaches the language, then builds real programs with it.
- The Odin Project — Full-stack JavaScript path with a project after every lesson.
Reference
Language reference
- MDN JavaScript Reference — Every operator, statement, and built-in object in one index.
- ECMAScript Specification — The language standard itself, the last word on behaviour. [advanced]
- TC39 Proposals — What is coming to the language, and the stage each proposal has reached.
- Can I use — Browser support tables for HTML, CSS, and JS features.
- Web Platform Status — Baseline availability of a feature across the major browsers.
Modern language features
- Finished Proposals — Year-by-year list of what actually shipped in the language.
- ECMAScript Compatibility Table — Which engine supports which ES2016+ feature, feature by feature.
- Optional Chaining — Reading through a property chain that may not exist, with
?.. - Nullish Coalescing — Falling back on
nullandundefinedonly, not on every falsy value. - Destructuring — Pulling values out of arrays and objects, with defaults and rest patterns.
- Array.at — Indexing from the end of an array with a negative index.
- Object.groupBy — Grouping a list by a key function, without reaching for a library.
- structuredClone — Deep-copying a value, built into the platform.
- Iterator Helpers — Lazy
map,filter, andtakeon any iterator. - Temporal — The replacement for
Date: instants, durations, and time zones.
Async
- JS Loupe — How the event loop works.
- Execution Model — Agents, jobs, and the event loop, written out precisely.
- Using Promises — Chaining, error handling, and composing promises.
- Async Functions — Writing asynchronous code that reads like synchronous code.
- Microtask Guide — What the microtask queue is, and when it drains.
- Tasks and Microtasks — Why a promise callback runs before a
setTimeoutof zero. - Error Handling — Throwing, catching, and where errors go in asynchronous code.
- AbortController — Cancelling a fetch, an event listener, or your own async work.
- Promise.allSettled — Waiting for every promise and getting each outcome, failures included.
- Promise.any — Taking the first promise that fulfills, ignoring the ones that reject.
- Using Fetch — The built-in HTTP client: requests, responses, streaming, and aborting.
Modules
- JavaScript Modules — ES modules end to end: exports, imports, and loading them in a page.
- Node.js ESM — How ESM and CommonJS interoperate in Node, and where they do not.
- Dynamic Import — Loading a module only when it is needed, with
import(). - Import Maps — Mapping bare module specifiers to URLs, with no bundler involved.
- Top-Level Await — Awaiting at the top of a module, and what it does to load order.
- esm.sh — CDN that serves any npm package as an ES module.
Debugging
- Chrome DevTools — Documentation for every panel in Chrome’s developer tools.
- Debug JavaScript — Setting breakpoints, stepping through code, and watching values.
- JavaScript Errors — Every built-in error message, with what actually causes it.
Practice
- JavaScript30 — Thirty small projects in vanilla JavaScript, no frameworks or libraries.
- Exercism — JavaScript track with exercises and free human mentoring.
- Codewars — Katas ranked by difficulty, with other people’s solutions after you pass. [freemium]
- JavaScript Questions — Multiple-choice questions on language behaviour, each one explained.
- JS Snippets — 212 favorite JavaScript utilities.
- 30 Seconds of Code — Short, explained snippets for everyday JavaScript problems.
Tools
Playgrounds and services
- StackBlitz — Run a Node project or a framework starter entirely in the browser. [freemium]
- JSON Placeholder — Fake online REST API for testing and prototyping.
- JSON Editor — JSON online editor.
- RegExr — Online tool to learn, build, & test regular expressions.
- Python Tutor — Step through JavaScript line by line and watch the call stack.
- Key.js — Shows the
key,code, and legacykeyCodefor any keypress. - CDN JS — Free CDN for script tags, for when a build step is not worth it.
- Axios — Promise-based HTTP client;
fetchcovers most cases natively.
Data visualization
- Apex Charts — Modern & interactive open-source charts.
- Chart JS — Simple yet flexible JavaScript charting.
- D3 — Low-level toolkit for visualizations no chart library covers.
Deep dives
- You Don’t Know JS #1 — Series of books about JavaScript.
- You Don’t Know JS #2 — Series of books about JavaScript. [ru]
- Closures — Why an inner function keeps the scope it was created in.
- Inheritance and the Prototype Chain — How property lookup really works, under classes and plain objects alike.
- The this Keyword — What
thisis bound to in every call form, and why. - Equality Comparisons — Where
==,===, andObject.isdiffer, and which one to use. - JavaScript Equality Table — Every comparison result in one grid, coercion included.
- wtfjs — List of funny and tricky JavaScript examples, each one explained.
- You Might Not Need jQuery — Vanilla equivalents for jQuery methods, for when you meet it in old code.
- Memory Management — How the garbage collector decides what to free, and how leaks happen.