Operator Optional Chaining (?.) di JavaScript: Mengakses Properti dengan Aman
1
min read .
Updated on
Operator Optional Chaining (?.) di JavaScript memudahkan akses properti dalam objek yang bersarang tanpa risiko error saat nilai null atau undefined. Fitur ini membuat kode lebih ringkas dan aman.
1. Sintaks
const hasil = objek?.properti;
const hasil = objek?.properti?.subProperti;
const hasil = objek?.properti?.[key];
const hasil = objek?.metode?.();objek?.properti→ Mengembalikanundefinedjikaobjeknullatauundefined.objek?.properti?.subProperti→ Mengembalikanundefinedjikaobjekatauobjek.propertinullish.objek?.properti?.[key]→ Mengakses properti secara dinamis dengan aman.objek?.metode?.()→ Memanggil metode hanya jika ada.
2. Contoh Penggunaan
a. Mengakses Properti Bersarang
const user = {
profil: {
nama: 'Alice',
alamat: { kota: 'Wonderland' }
}
};
const kota = user.profil?.alamat?.kota;
console.log(kota); // Wonderland
const kodePos = user.profil?.alamat?.kodePos;
console.log(kodePos); // undefined
b. Memanggil Metode dengan Aman
const user = { profil: { getName: () => 'Alice' } };
const nama = user.profil?.getName?.();
console.log(nama); // Alice
const umur = user.profil?.getAge?.();
console.log(umur); // undefined
c. Mengakses Properti Dinamis
const key = 'nama';
const userName = user.profil?.[key];
console.log(userName); // Alice
d. Mengakses Elemen Array Opsional
const users = [{ nama: 'Alice' }, { nama: 'Bob' }];
const userKedua = users?.[1]?.nama;
console.log(userKedua); // Bob
const userKetiga = users?.[2]?.nama;
console.log(userKetiga); // undefined
e. Menggabungkan dengan Nullish Coalescing (??)
const name = user.profil?.nama ?? 'Tamu';
console.log(name); // Alice
const age = user.profil?.age ?? 25;
console.log(age); // 25
3. Keuntungan Menggunakan Optional Chaining
- Mencegah Error: Tidak perlu banyak pengecekan null/undefined.
- Meningkatkan Readability: Kode lebih bersih dan mudah dibaca.
- Mempermudah Struktur Data Kompleks: Ideal untuk API dengan data opsional atau objek bersarang.
4. Dukungan Browser
Didukung di Chrome 80+, Firefox 74+, Safari 13.1+, Edge 80+. Tidak didukung di Internet Explorer.
Kesimpulan
Operator ?. sangat berguna untuk mengakses properti bersarang dengan aman. Dengan optional chaining, kode lebih ringkas, aman dari runtime error, dan mudah dipelihara.