JavaScript Mastery
JavaScript from scratch — variables, functions, async/await, DOM manipulation, testing, TypeScript, Node.js, and build tools. A task tracker rebuilt 20 times, from console.log to a typed, tested, bundled production app.
JavaScript Masterclass 2026: How the Web's Language Actually Works
JavaScript is the only language that runs natively in every browser on Earth, and it also powers servers, mobile apps, and desktop applications. A complete practical start — install the modern toolchain, understand how JavaScript actually executes, and build your first real program.
JavaScript Variables and Types: var vs let vs const, Type Coercion, Equality
JavaScript's type system looks familiar and then does something no other mainstream language does — and the var/let/const distinction determines whether your loops actually work correctly. A complete guide to declarations, primitive types, coercion, and why === always beats ==.
JavaScript Functions: Declaration, Expression, Arrow Functions, This
JavaScript has four distinct ways to write a function, and picking the wrong one is why "this" mysteriously becomes undefined in code that looks correct. A complete guide to every function syntax, hoisting, and the this keyword explained precisely rather than through memorized rules.
JavaScript Arrays and Objects: Methods, Destructuring, Spread/Rest
The task tracker has used arrays and objects informally since Post
JavaScript Control Flow, Loops, and Iteration Methods
JavaScript has more loop types than most languages, and using the wrong one causes real bugs — for...in on an array gives you string indices instead of values, and forEach can't be broken out of at all. A complete guide to every control flow construct and when each one is actually the right choice.
JavaScript Scope, Closures, and the Module Pattern
The task tracker's tasks array has been globally accessible and freely mutable from anywhere since Post
JavaScript Prototypes and Classes: OOP Without the Mystery
JavaScript classes are not a separate feature bolted onto the language — they are syntax sugar over a prototype-based object system that predates them entirely. A complete guide to prototypes, ES6 classes, inheritance, private fields, and the exact same this-binding bug from Post
JavaScript Error Handling: try/catch/finally, Error Types, Custom Errors
BankAccount's withdraw method has logged "Insufficient funds" and quietly continued since Post
JavaScript DOM: Selecting, Manipulating, and Responding to Events
The task tracker has lived entirely in the terminal for nine posts — this is where it becomes a real, clickable web page. A complete guide to the DOM, event handling, event delegation, and the innerHTML security vulnerability every web developer needs to understand.
JavaScript Fetch API: HTTP Requests, REST APIs, and JSON Handling
Post 9's TaskManager simulated a server with setTimeout — this post makes it real, using fetch() against an actual API. Includes the single most important fetch gotcha, it does not reject on 404 or 500, only on genuine network failure.
JavaScript Modules: import/export, CommonJS, and the Module System
Post 6 used an IIFE to fake module privacy because it wanted to demonstrate the concept before covering real modules — this post covers the genuine module system properly. Named exports, default exports, CommonJS (still everywhere in existing code), and the file extension gotcha that catches everyone in Node.js.
JavaScript Testing: Jest, Unit Tests, Mocking, and TDD
Every piece of code across this series — custom errors, async API calls, class methods — has been verified by eyeballing console output. That doesn't scale. A complete guide to Jest and Vitest, testing async code correctly, and mocking fetch so tests run in milliseconds instead of hitting a real network.
JavaScript Functional Programming: Pure Functions, Immutability, Composition
Post 13 showed that pure functions are trivially easy to test — this post explains exactly why, and covers a genuinely important gotcha - sort() and splice() mutate the original array while map() and filter() don't, and most developers assume otherwise until it breaks something.
JavaScript Performance: V8 Internals, Optimization, Memory Leaks
This post has been promised since Post 1 — real measured proof instead of performance claims taken on faith, including Post 7's arrow-function-class-field memory cost, and the specific patterns that cause real JavaScript memory leaks.
TypeScript for JavaScript Developers: Why Types Change Everything
Every function across this series has carried a hidden risk — passing the wrong type of argument produces a runtime error, sometimes far from the actual mistake. TypeScript catches this before the code ever runs. A complete guide to interfaces, type safety, and giving the task tracker's Task shape genuine compiler-enforced structure for the first time.
JavaScript in the Browser: Web APIs, Storage, Workers
Post 9 explained that async/await handles waiting without blocking — but genuine CPU-intensive computation still runs on the single main thread. Web Workers are the real escape hatch. A complete guide to localStorage, Web Workers, and giving the task tracker permanent browser storage with zero server required.
Node.js Fundamentals: Server-Side JavaScript, Events, Streams
Node.js has run every code example since Post 1, always treated as "just JavaScript" — this post covers what actually makes it a server-side runtime, file system access, EventEmitter, streams for handling data too large for memory, and worker_threads, Node's answer to Post 17's Web Workers.
JavaScript Build Tools 2026: Vite, esbuild, Bundlers Explained
Post 12's modules work perfectly in Node.js — shipping them to real users' browsers requires bundling, minification, and transpilation. A complete guide to why build tools exist, esbuild as the fast engine underneath modern tooling, and Vite as the dominant development and production build tool for 2026.
JavaScript Ecosystem 2026: ES2026 Features, Frameworks, What's Next
This series started with node --version and a single console.log. It ends with a fully typed, tested, bundled application ready for real deployment. The final post covers recent ECMAScript features, an honest survey of the framework landscape, and closes out the task tracker's complete 20-post journey.