![]() |
Destructuring is much more than a syntactic shortcut: it's a powerful way to make code clearer and handle complex structures elegantly. Here we'll see what it does, why it does it, and when to use it, with examples explained step by step.
✅ 1. Array Destructuring
const numbers = [1, 2, 3];
const [a, b, c] = numbers;
Explanation:
numbers
is an array.- The line
const [a, b, c] = numbers;
assigns:a = numbers[0]
→1
b = numbers[1]
→2
c = numbers[2]
→3
- Destructuring is positional: the order of the elements is fundamental.
✅ 2. Destructuring of Objects
const user = { name: "Luca", age: 30 };
const { name, age } = user;
Explanation:
- Here we extract properties from the
user
object. name
andage
are properties ofuser
.- Destructuring works for matching names.
❗ If you writeconst { name } = user
, you'll getundefined
becausename
is not a property of the object.
✅ 3. Default Values
const [x = 10, y = 20] = [5];
Explanation:
x
takes the first value in the array, which is5
.y
doesn't find a second value, so it uses the default value20
.
This technique is useful for handling optional parameters or missing values.
✅ 4. Renaming Variables (Aliases)
const person = { firstName: "Anna", lastName: "Smith" };
const { firstName: name, lastName: surname } = person;
Explanation:
firstName: name
means: take thefirstName
property and assign it to thename
variable.- Useful if you want to change the name for clarity or to avoid conflicts.
✅ 5. Rest Operator in Destructuring
Array:
const [first, ...rest] = [1, 2, 3, 4];
first
takes the first value in the array →1
....rest
takes all the others →[2, 3, 4]
.
The ...rest
can be used only as the last entry.
Objects:
const { a, ...others } = { a: 1, b: 2, c: 3 };
a
is extracted normally.others
will contain{ b: 2, c: 3 }
.
✅ 6. Destructuring in Function Parameters
function greet({ name, age }) {
console.log(`Hello ${name}, you are ${age} years old.`);
}
- Destructuring directly in the function parameters.
- Useful for extracting only what you need from a complex object.
Defaults in Parameters
function createUser({ username = "anonymous", isAdmin = false } = {}) {
return { username, isAdmin };
}
= {}
prevents errors if the function is called without arguments.username = "anonymous"
provides a fallback.
✅ 7. Nested Destructuring
const user = {
id: 1,
profile: {
name: "Lucia",
contact: {
email: "lucia@mail.com"
}
}
};
const { profile: { contact: { email } } } = user;
- Extract
user.profile.contact.email
into a single line. - Useful for deep objects, but be careful if a level is missing: it can generate errors.
✅ 8. Variable Swapping
let a = 1, b = 2;
[a, b] = [b, a];
- Reverse the values of
a
andb
without using a temporary variable.
✅ 9. Combining Destructuring and Spread
const config = {
debug: true,
port: 8080,
env: "production"
};
const { debug, ...restConfig } = config;
debug
is extracted.restConfig
contains the other properties:{ port: 8080, env: "production" }
.
Useful when you want to remove some properties before passing an object to a function or API.
❌ Common Mistakes to Avoid
const { foo } = undefined;
❗ This code causes an error (Cannot destructure property 'foo' of undefined
).
Correct:
const { foo } = someObject || {};
Or in function parameters, use = {}
to avoid errors.
🎓 Complete and Realistic Example
function setupConnection({
host = "localhost",
port = 80,
credentials: { username, password } = {}
} = {}) {
console.log(`Connecting to ${host}:${port} as ${username || "guest"}`);
}
- Supports partial or missing objects without throwing errors.
- Extracts nested data with destructuring.
- Provides default values at all levels.
🏁 Conclusion
Destructuring is a semantic tool: it allows you to say "I want this data" and ignore the rest. It's useful in React components, utility functions, event handlers, API data fetches, and much more.
👉 An expert doesn't just use it: he uses it well, clearly, safely, and readably.
Follow me #techelopment
Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment