Materi
Data dari formulir atau dari server sering tidak lengkap: pelanggan tanpa alamat, pesanan tanpa kupon. Membaca pelanggan.alamat.kota ketika alamat tidak ada menghentikan program. Operator optional chaining, ?., berhenti dan menghasilkan undefined begitu sisi kirinya null atau undefined, tanpa melempar error. Bentuknya ada tiga: obj?.prop untuk property, obj?.[kunci] untuk kunci dinamis atau indeks, dan fungsi?.() untuk memanggil fungsi yang mungkin tidak ada.
Pasangannya adalah ??, nullish coalescing. a ?? b menghasilkan b hanya bila a null atau undefined. Operator || berbeda: ia mengganti semua nilai yang dianggap salah, termasuk 0, teks kosong, dan false. Untuk stok 0, diskon 0, atau catatan kosong yang memang sah, || memberi nilai cadangan yang keliru, sedangkan ?? mempertahankannya.
const pesanan = { kode: "P-10", kupon: null, diskon: 0 };
pesanan.kupon?.kode; // undefined, bukan TypeError
pesanan.pelanggan?.alamat?.kota; // undefined
pesanan.diskon || 5; // 5 (0 dianggap salah)
pesanan.diskon ?? 5; // 0 (0 bukan null/undefined)
pesanan.kupon?.kode ?? "Tanpa kupon"; // "Tanpa kupon"Kedua operator dipakai bersama di satu ekspresi: ?. menelusuri jalan ke data yang mungkin tidak ada, dan ?? memberi teks pengganti di ujungnya. ?. hanya ditaruh di titik yang memang boleh kosong. Menaruhnya di setiap titik menyembunyikan data yang seharusnya selalu ada, sehingga kesalahan pengisian data tidak pernah memunculkan pesan.