Skip to content

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

Reference

Language reference

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 null and undefined only, 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, and take on 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 setTimeout of 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 legacy keyCode for any keypress.
  • CDN JS — Free CDN for script tags, for when a build step is not worth it.
  • Axios — Promise-based HTTP client; fetch covers 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