Giá trị mặc định trong destructuring chỉ kích hoạt khi giá trị là undefined, không kích hoạt với null. null là một giá trị hợp lệ nên nó được gán thẳng.
js
const { name = 'Khách' } = { name: null }; // null
const { name: n = 'Khách' } = { name: undefined }; // 'Khách'
const { name: m = 'Khách' } = {}; // 'Khách'Cách xử lý null từ API: destructure rồi lọc riêng, hoặc dùng ?? sau khi lấy ra.
js
const displayName = user.name ?? 'Khách';Đổi tên (rename) dùng cú pháp { key: newName } — dấu hai chấm ở đây là gán vào biến mới, không phải khai báo kiểu.
Rename và default kết hợp được, và lồng nhau được:
js
const res = { data: { user_id: 7 }, status: 200 };
const { data: { user_id: userId = 0 }, status: httpStatus } = res;
// userId = 7, httpStatus = 200; KHÔNG có biến nào tên data hay user_idHai điểm hay sai thêm: destructure từ null/undefined ném TypeError (phòng bằng const { a } = obj ?? {}), và destructure trong tham số hàm cần default cho cả object (function f({ a } = {})) nếu muốn gọi f() không đối số.