Hari 8: ES6+ — Destructuring Lanjutan & Optional Chaining
60 min
Last updated 09 Apr 2026
Destructuring Lanjutan
// Nested destructuring
const { a: { b: { c } } } = { a: { b: { c: 42 } } };
console.log(c); // 42
// Swap dua variabel
let x = 1, y = 2;
[x, y] = [y, x];
console.log(x, y); // 2 1
// Parameter fungsi dengan destructuring
function tampilUser({ nama, umur = 0, alamat: { kota } = {} }) {
return `${nama} (${umur}) — ${kota ?? "Unknown"}`;
}
const user = { nama: "Budi", umur: 25, alamat: { kota: "Jakarta" } };
console.log(tampilUser(user)); // Budi (25) — Jakarta
Optional Chaining & Nullish Coalescing
const config = {
db: {
host: "localhost",
port: 5432,
}
};
// Optional chaining (?.)
console.log(config?.db?.host); // "localhost"
console.log(config?.cache?.ttl); // undefined (tidak error)
console.log(config?.db?.user?.name); // undefined
// Nullish coalescing (??)
const port = config?.db?.port ?? 3000;
console.log(port); // 5432
// Logical Assignment (ES2021)
let a = null;
a ??= "default"; // a = a ?? "default"
console.log(a); // "default"
💡
Notice: Optional chaining (?.) mencegah TypeError saat property tidak ada. Sangat berguna saat memproses data dari API.
Assignment
Dari data user API (mungkin nested dan ada yang null), gunakan optional chaining untuk aman mengakses data. Tampilkan nama, kota, dan versi plan.
Expected output:
Nama: Budi Santoso
Kota: Bandung
Plan: Free
JS
script.js
Solution
Output