Toán tử Nullish Coalescing trong Javascript
Javascript
323
operator
4
White

Thành Minh viết ngày 15/08/2021

alt text

Nullish Coalescing là một toán tử khá thú vị trong Javascript / Typescript.

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 (các biến chưa được xác định). Giá trị trả về của a ?? b là:

  • a nếu a xác định.
  • b nếu a không xác định.

Giả sử chúng ta có biến user và chúng ta muốn log xem user đã đăng nhập hay chưa, đầu tiên ta có thể sử dụng 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 toán tử || mà có lẽ ta đã từng gặp trước đó.

Sự khác biệt chính của 2 toán tử này là:

  • ?? đánh giá defined value.
  • || đánh giá truthy value.

Truthy value là những giá trị trong Javascript mà khi ép kiểu về Boolean thì sẽ cho ra giá trị là true, vì vậy những giá trị như false, 0, null, undefined, '' sẽ đều cho ra kết quả như nhau - falsy value. Chẳng hạn:

const message = ''
console.log(message || 'Hello World!')
// Hello World!
console.log(message ?? 'Hello World!')
// ''

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ẽ báo lỗi, ví dụ:

let subscribe = true && !false ?? false
// Error: '&&' and '??' operations cannot be mixed without parentheses.

Ta cần chỉ định thứ tự ưu tiên để loại bỏ lỗi này:

let subscribe = (true && !false) ?? false
console.log(subscribe)

// true

Bài viết được đăng lại từ blog: Toán tử Nullish Coalescing trong Javascript

ThanhMinh 18-05-2021

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Thành Minh

8 bài viết.
49 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
42 25
1. Các thư viện cần dùng Thư viện (Link) để xử lí file Zip. Thư viện (Link) để xử lí file Rar. Thư viện (Link), thư viện rarfile bắt buộc đi kèm...
Thành Minh viết hơn 4 năm trước
42 25
White
31 3
V8 hay còn gọi là Chrome V8, là một Javascript engine được phát triển bởi Chromium Project, mục đích ban đầu là dành cho Google Chrome nói riêng và...
Thành Minh viết gần 4 năm trước
31 3
White
8 2
Mỗi năm thì lại có một bản ECMAScript được thêm vào, cùng với đó là thêm kha khá tính năng mới, bài viết này sẽ kể đến một vài tính năng nhỏ nhưng ...
Thành Minh viết hơn 3 năm trước
8 2
Bài viết liên quan
Male avatar
0 0
Swift Custom operators Part 1 ===== Updated ngày 30/06 Updated một chút: Vì những bất tiện và không rõ ràng về thông tin của kipalog, mình mới dọ...
Bùi Khánh Duy viết hơn 3 năm trước
0 0
White
69 8
Tăng sức mạnh cho javascript với lodash Lần này mình sẽ giới thiệu 1 thư viện javascript vô cùng bá đạo có tên là "lodash]1]", có thể nói nó là LI...
Huy Hoàng Phạm viết gần 6 năm trước
69 8
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
8 bài viết.
49 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!