Nullish Coalescing là một toán tử khá thú vị trong Javascript.
Toán tử này được viết dưới dạng: ??
. Nó được sử dụng với các biến mang giá trị null
hoặc undefined
.
Chẳng hạn, giá trị trả về của biểu thức a ?? b
là:
a
nếua
xác định.b
nếua
không xác định.
Giả sử chúng ta có biến user
và chúng ta muốn kiểm tra xem user
này đã đăng nhập hay chưa, đầu tiên ta có thể sử dụng câu điều kiện if / else
như sau:
let user
if (user) {
console.log(user)
} else {
console.log('User not found')
}
// Output: User not found
Ngắn gọn hơn với toán tử 3 ngôi:
let user
console.log(user ? user : 'User not found')
// Output: User not found
Với Nullish Coalescing:
let user
console.log(user ?? 'User not found')
// Output: User not found
Tới đây chúng ta thấy Nullish Coalescing khá giống với ||
(hay còn gọi là Logical OR operator) mà có lẽ bạn gặp trước đó khá nhiều.
Sự khác biệt chính của 2 toán tử này là:
??
đánh giánull
vàundefined
.||
đánh giá falsy value.
Một điều cần lưu ý nữa đó là nếu sử dụng ??
với &&
hay ||
mà không chỉ định thứ tự ưu tiên thì sẽ có thể gặp lỗi, ví dụ:
const result = value && value.property ?? 'default';
// Error: '&&' and '??' operations cannot be mixed without parentheses.
Nếu mới mua vé máy bay hạng Thương gia để bay ra Hà Nội ngắm mùa thu vào cuối năm này, bạn (dĩ nhiên) sẽ không muốn phải chờ ở hạng Phổ thông để làm thủ tục check-in, đúng không?
Tương tự, ta cần chỉ định thứ tự ưu tiên để tránh lỗi này, chẳng hạn với toán tử nhóm:
let subscribe = (true && !false) ?? false
console.log(subscribe)
// true