Intermediate JavaScript

A developer feeding building blocks into an assembly machine with a MODULES conveyor, a clamp stacking blocks, ASYNC and AWAIT tubes, and a CLASS blueprint.

Once you’re comfortable with the basics, these tutorials help you write the kind of JavaScript you’ll find in real-world projects. You’ll work with asynchronous code using promises and async/await, organize programs into ES modules, model data with classes, and use closures, higher-order functions, and array methods like map(), filter(), and reduce() to write concise, expressive code.

These are the patterns that turn short scripts into maintainable programs. You’ll learn how to handle errors with try/catch, work with JSON and dates, destructure objects and arrays, and structure code so it stays readable as it grows. Each tutorial builds on what you already know and points out the pitfalls that trip up developers moving past beginner code.

Not Sure Where You Stand?

Take the JavaScript Skill Test to find out which level fits you best:

Take the Quiz: Test your knowledge with our interactive “JavaScript Skill Test” quiz. You’ll receive a score upon completion to help you track your learning progress:


Interactive Quiz

JavaScript Skill Test

Take this JavaScript quiz to test your skills from basic to expert level. Are you at the Basics, Intermediate, Advanced, or Expert level?

You should be comfortable with variables, data types, conditionals, loops, functions, arrays, and objects. If you can write a small program without looking up basic syntax, you’re ready. If not, the JavaScript Skill Test can show you which topics to review first.

They’re two ways of writing the same thing. A promise represents a value that will be available later, and you handle it with .then() and .catch(). The async/await syntax is built on promises and lets you write asynchronous code that reads top to bottom, like synchronous code.

A closure is a function that remembers the variables from the scope where it was created, even after that outer function has returned. Closures let you keep private state, build function factories, and write callbacks that carry their own data.

Both are valid. Classes work well when you create many objects that share behavior, such as UI components or data models. Plain objects and functions are often simpler for one-off data and utility code. Many modern codebases mix the two.

Put related code in its own file and share it with export, then bring it into another file with import. ES modules work natively in modern browsers with <script type="module"> and in Node.js. Modules keep each file focused and avoid polluting the global scope.

Not sure where to start? Mentor AI can put these tutorials in an order that fits what you already know.