Academy
The explanations behind the exercises.
One concept per page, written to be read once and understood — then three exercises that make you use it. No videos, no course to enrol in.
JavaScript
10 pagesClosures in JavaScript
What a closure is, why the variable outlives the function that created it, and the loop bug every JavaScript developer hits once.
ReadThe JavaScript event loop
How one thread runs everything: the call stack, the microtask queue, timers, and why a promise always resolves before a setTimeout of 0.
ReadPromise.all, allSettled, race and any
The four ways to combine promises, what each one does with a rejection, and how to pick the right one without guessing.
ReadHow `this` is decided
The four rules that fix the value of this at call time, why extracting a method breaks it, and what arrow functions actually change.
ReadPrototypes and the prototype chain
How property lookup really works, what class is syntax for, and the difference between prototype and __proto__ that trips everyone up.
ReadHoisting and the temporal dead zone
What is really moved to the top of a scope, why let and const are hoisted too, and the difference between undefined and a ReferenceError.
ReadEquality: ==, ===, Object.is and deep equality
What loose equality really does, the two cases where === is not what you want, and why comparing objects almost never means what people expect.
ReadShallow copy vs deep copy
Why spreading an object still shares its nested values, what structuredClone fixes, and what JSON round-tripping quietly destroys.
ReadDebounce vs throttle
Two ways to fire less often, and the one question that tells you which you need — do you want the last call, or a steady rate?
ReadIterators and generators
The protocol behind for...of and spread, how a generator writes one for you, and why a paused function is the point.
Read