Languages · FOCUSED GUIDE

Learn JavaScript.

Understand scope, functions, objects, and asynchronous execution.

YOUR LEARNING PATH

JavaScript essentials

Start with the essentials or pick the concept you need.

RECOMMENDED NEXTExecution contexts & the call stack
Start learning
01Scope & executionExplore concepts
  1. Execution contexts & the call stack2 min
  2. Scope & lexical environments2 min
  3. Variables: var, let & const2 min
  4. Hoisting & the temporal dead zone2 min
  5. Are objects passed by reference?2 min
  6. What is the difference between == and ===?2 min
  7. What are null, undefined and NaN?2 min
02Functions & objectsExplore concepts
  1. Closures2 min
  2. How does this work? How are arrow functions different?2 min
  3. How do prototypes and classes work?2 min
  4. Is spread a deep copy?2 min
  5. Debounce vs throttle: what is the difference?2 min
03Async JavaScriptExplore concepts
  1. Asynchronous JavaScript2 min
  2. Working with promises2 min
  3. Why does forEach with async cause problems?2 min
  4. What causes a race condition?2 min

What you will study in JavaScript

Focused lessons organized by concept. Start with the explanation, trace the examples, and check your recall before moving on.

Scope & execution

An execution context is the information JavaScript uses while running a piece of code, including its variables, scope and this value. The call stack tracks which function is currently running and where execution should return. Each function call adds a context, and returning removes it.

Functions & objects

A closure is a function together with access to the variables in the scope where it was created. That access remains available even after the outer function has finished running. Closures are useful for private state, callbacks and functions configured with some remembered value.

Async JavaScript

Asynchronous JavaScript lets a program start work that may finish later without waiting synchronously for the result. A promise represents eventual completion, and async/await provides a readable way to work with promises. The runtime queues continuations and runs them when the current synchronous work has finished and the relevant checkpoints are reached.

Related to JavaScript
Expand your skills next