writing

Toán tử Nullish Coalescing trong Javascript

Published on May 18, 2021

Also available in🇬🇧

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à:

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à:

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