Destructuring Assignment

Destructuring is the modern way to unpack values out of arrays and objects into their own variables — in a single, readable line. If you've ever written const name = user.name; const age = user.age; three times in a row, this lesson is about to save you a lot of typing.

Learn Destructuring Assignment in our free JavaScript course — a beginner-friendly interactive lesson with runnable examples, a practice exercise and a quick…

Part of the free JavaScript course at LearnCodingFast — hands-on lessons with examples you run in your browser, plus practice exercises and a quick quiz.

It's everywhere in real codebases: React props, API responses, function options, and module imports all lean on it heavily.

📚 Prerequisites: You should know how variables , arrays, and objects work. Destructuring is just a shortcut for reading values you already understand.

💡 Running Code Locally: While this online editor runs real JavaScript, some advanced examples may have limitations. For the best experience:

📦 Real-World Analogy: Destructuring is like unpacking a delivery box :

Wrap variable names in square brackets on the left of = . They fill up from the array in order. You can skip elements with a bare comma, and grab "the rest" with the ...rest syntax.

Before destructuring, swapping two variables needed a temporary third one. Now it's a single, almost self-explanatory line — a favourite in interviews and a genuinely handy trick.

Use curly braces. The variable name must match the property key. Order does not matter — JavaScript looks up each key by name. This is the form you'll use most often, especially with API data and configuration objects.

Two power-ups make object destructuring shine. Rename with key: newName when a property name clashes or is awkward. Add = fallback to supply a default when a value is missing. Remember: the default only kicks in for undefined , not for null or 0 .

Destructure title and author from the book object.

Objects often hold other objects. You can reach inside by mirroring the shape of the data. It reads cleanly, but beware: if an intermediate object is missing, you'll get a real error — so add defaults at each level when the data might be incomplete.

This is where destructuring really pays off. Instead of one positional argument after another, accept a single options object and destructure it in the parameter list — complete with defaults. Callers can pass fields in any order and skip the ones they don't need.

Use array destructuring to swap x and y in one line.

These lines are scrambled. Reorder them so it logs Mara 90 .

Why: the object must exist before you can destructure it, and the variables must exist before you log them.

Predict the output before revealing the answer.

0 — defaults only replace undefined . 0 is a real value, so it stays.

y — the leading comma skips the first element, so second grabs the one at index 1.

9 — x: renamed reads property x but stores it in a variable named renamed .

Up next: Spread & Rest Operators — the ... that copies, merges, and gathers. 🌐

Practice quiz

How are arrays destructured?

  • By name with curly braces
  • Alphabetically
  • By position with square brackets
  • By type

Answer: By position with square brackets. Array destructuring uses square brackets and fills variables in order, by position.

How are objects destructured?

  • By name with curly braces
  • By position with square brackets
  • By index
  • By value

Answer: By name with curly braces. Object destructuring uses curly braces and matches each variable to a property by name; order does not matter.

Given const { a = 5 } = { a: 0 }, what is a?

  • 5
  • undefined
  • null
  • 0

Answer: 0. Defaults only apply when the value is undefined. 0 is a real value, so it stays 0.

What does const [, second] = ["x", "y", "z"] assign to second?

  • "x"
  • "y"
  • "z"
  • undefined

Answer: "y". The leading bare comma skips the first element, so second grabs index 1 ('y').

How do you rename a property while destructuring?

  • const { name: userName } = u
  • const { name => userName } = u
  • const { name as userName } = u
  • const { userName = name } = u

Answer: const { name: userName } = u. The colon syntax const { name: userName } reads property name into a variable called userName.

What happens when you destructure a property that does not exist on an object?

  • It throws a TypeError
  • You get null
  • You get undefined, no error
  • It returns an empty object

Answer: You get undefined, no error. A missing property simply yields undefined; no error is thrown, which is why defaults are useful.

What does const [a, b] = [b, a] accomplish for already-declared a and b?

  • It deletes both
  • It swaps their values in one line
  • It throws an error
  • It copies a into b only

Answer: It swaps their values in one line. Array destructuring lets you swap two variables in one line with no temporary variable.

Why default a parameter object: function f({ x } = {})?

  • To make x required
  • To rename x
  • To make x a number
  • So calling f() with no argument does not crash on destructuring

Answer: So calling f() with no argument does not crash on destructuring. Defaulting the whole object to {} lets the function be called with no arguments without throwing.

What does const { a } = null throw?

  • Nothing, a is undefined
  • A TypeError
  • A SyntaxError
  • A ReferenceError

Answer: A TypeError. Destructuring null or undefined throws a TypeError; guard with a fallback like data || {}.

Given settings = { theme: "dark", volume: 0 } and const { fontSize = 14, volume = 5 } = settings, what is volume?

  • 5
  • 14
  • 0
  • undefined

Answer: 0. volume is 0 (a real value), so its default is not used; fontSize would be 14 because it is missing.