Learn
← Previous Next →

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