- Optional chaining
?.: truy cập property/gọi method lồng sâu mà không lỗi khi gặpnull/undefined.user?.address?.city— nếuuserhoặcaddresslànull/undefinedthì trả vềundefinedthay vì némTypeError. Dùng được với property (a?.b), index (a?.[i]), và gọi hàm (fn?.()). Nó short-circuit: gặp nullish là dừng, không đọc tiếp bên phải. - Nullish coalescing
??: trả về vế phải chỉ khi vế trái lànullhoặcundefined.value ?? 'default'.
Vì sao ?? hơn || trong nhiều ca: || trả vế phải với mọi giá trị falsy — nên 0 || 10 → 10, '' || 'x' → 'x', ghi đè nhầm những giá trị hợp lệ. ?? chỉ chặn null/undefined, giữ nguyên 0, '', false.
js
const count = data.count ?? 10 // keeps 0 if count is 0
const name = user?.profile?.name ?? 'Guest'Lưu ý: không được trộn ?? với ||/&& mà không có ngoặc — cú pháp bắt buộc để tránh nhập nhằng thứ tự.