Skip to content
Free3h 10m · 24 lessons

JavaScript Foundations

A calm tour of the language behind every website. We stay in the browser console for the first hour, then build small pieces of real behaviour: a fetch that handles failure, a debounce you understand line by line, and modules that keep a project tidy.

The route

  1. Values, and the console as a lab

    Primitives and objects, and how to interrogate anything before writing a line.

    You board here
    40 min
  2. Functions, scope and closures

    What a closure is once you stop being frightened of the word, and where it shows up.

    40 min
  3. The methods worth memorising

    map, filter and reduce, destructuring and spread — including when each is the wrong choice.

    40 min
  4. Async, honestly

    The event loop, promises and async/await, and what happens to errors in each.

    40 min
  5. Modules and a project that stays tidy

    Imports, exports, and how to split a file before it becomes a problem.

    30 min

A look at the teaching

Stop 4 · Async, honestlySample excerpt

A fetch that handles failure, written once, properly.

async function getCourse(id) {
  const res = await fetch(`/api/courses/${id}`);

  // fetch only rejects on network failure — a 404 or a 500
  // is a perfectly successful promise with a sad status.
  if (!res.ok) {
    throw new Error(`Course ${id}: ${res.status}`);
  }

  return res.json();
}

The line everyone forgets is the ok check. fetch resolves for a 500, so a missing check turns a server error into a confusing parse error three frames away.

Who is driving

NB
Nóra Bakos
Frontend lead

Nóra teaches the way a good colleague explains things at a whiteboard — no jargon for its own sake, and nothing hidden behind “as you can see”.

Placeholder profile