Courses JavaScript The language that powers the web
JavaScript makes pages interactive and runs entire applications. Variables, functions, arrays and objects, then the DOM, asynchronous code, closures and modern tooling: the backbone of every web developer.
Start this course in Kodokon Foundations Beginner - the basics, step by step
Variables (let, const) and primitive typesDiscover how to store information with let and const, and identify the basic value types in JavaScript. Operators and conditions (if/else, comparisons, ===)Learn how to calculate, compare values with === and make your program take decisions with if and else. Loops: for, while, for...ofRepeat instructions without repeating yourself thanks to for, while and for...of loops. Functions: declaration, parameters, returnCreate reusable blocks of code with function, pass them parameters and get their results back with return. Arrays and objects: creating, reading, modifyingStore several values in arrays, describe entities with objects, then learn how to read and modify them. Progression Intermediate - build real things
Array methods: map, filter, reduce, findLearn to transform, filter, and aggregate data with the four array methods most used in real-world projects. Arrow functions, scope, and template literalsMaster arrow syntax, block scope, and closures, then build dynamic strings with template literals. Destructuring and spread/restCleanly extract data from objects and arrays, then copy and merge structures with the spread operator. Manipulating the DOM: querySelector, event listenersSelect elements on the page, react to clicks, and adopt event delegation for performant code. JSON, localStorage, and your first fetchSerialize your data as JSON, persist it in the browser with localStorage, and retrieve remote data with fetch. Advanced Proficient - advanced patterns and performance
Closures and lexical scopeMaster how closures capture variables so you can encapsulate state and avoid scoping pitfalls. this, prototypes and classesUnderstand how this is resolved dynamically, how the prototype chain works, and what classes actually add to the object model. Async in depth: promises, async/await, error handlingLeverage the event loop, parallelize your promises correctly, and make asynchronous error handling reliable. ES modules: import/export, structuring a projectStructure your projects with ES modules by leveraging their static analysis and avoiding toxic barrels and circular dependencies. Debugging and robustness: try/catch, advanced console, custom errorsBuild an explicit error strategy with dedicated classes, well-placed catch boundaries, and a console used to its full potential. Mastery Expert - architecture, internals and edge cases
The event loop: call stack, microtasks, macrotasksUnderstand how the engine actually schedules synchronous code, microtasks, and macrotasks. Iterators, generators, and iteration protocolsMaster the protocols behind for...of, spread, and destructuring, then use generators to produce lazy sequences. Proxy, Reflect, and metaprogrammingIntercept the language's fundamental operations with Proxy traps and cleanly delegate default behavior with Reflect. Memory and performance: GC, WeakMap/WeakRef, debounce/throttleUnderstand how the garbage collector works, use weak references to avoid leaks, and smooth out expensive work with debounce and throttle. Functional patterns: currying, composition, immutabilityStructure your code with currying, function composition, and immutable data to gain predictability and testability.