JavaScript - Nullish Coalescing Operator

Xin chào, các bạn đang học lập trình! Hôm nay, chúng ta sẽ khám phá một tính năng thú vị của JavaScript có thể làm cho mã của bạn干净 và hiệu quả hơn. Nó được gọi là Nullish Coalescing Operator, và tôi đảm bảo rằng bạn sẽ thấy nó thú vị như tôi khi bạn hiểu được sức mạnh của nó!

JavaScript - Nullish Coalescing Operator

Nullish Coalescing Operator là gì?

Trước khi chúng ta đi vào chi tiết, hãy bắt đầu với một câu hỏi đơn giản: Bạn có bao giờ phải kiểm tra xem một giá trị có phải là null hoặc undefined trước khi sử dụng nó không? Nếu bạn gật đầu, bạn sẽ yêu thích điều tiếp theo!

Nullish Coalescing Operator (được biểu thị bằng ??) là một toán tử logic trả về operand bên phải khi operand bên trái là null hoặc undefined, và ngược lại sẽ trả về operand bên trái.

Bây giờ, tôi biết rằng điều này có thể听起来有点令人困惑 ban đầu, nhưng đừng lo lắng! Chúng ta sẽ phân tích từng bước chi tiết với nhiều ví dụ.

Cú pháp

Cú pháp của Nullish Coalescing Operator rất đơn giản:

leftExpr ?? rightExpr

Ở đây, leftExprrightExpr là các biểu thức của bất kỳ loại nào. Nếu leftExpr là null hoặc undefined, toán tử trả về rightExpr. Ngược lại, nó trả về leftExpr.

Ví dụ

Hãy cùng xem một số ví dụ để hiểu cách nó hoạt động trong thực tế.

Ví dụ 1: Sử dụng cơ bản

let username = null;
let displayName = username ?? "Anonymous";

console.log(displayName); // Output: "Anonymous"

Trong ví dụ này, username là null, vì vậy Nullish Coalescing Operator trả về "Anonymous". Nó giống như nói, "Nếu username có giá trị, sử dụng nó. Nếu không, sử dụng 'Anonymous'."

Ví dụ 2: So sánh với toán tử logical OR

Bạn có thể đang nghĩ, "Chúng ta không thể chỉ sử dụng toán tử logical OR (||) cho điều này?" Hãy xem sự khác biệt:

let count = 0;

let result1 = count || 10;
let result2 = count ?? 10;

console.log(result1); // Output: 10
console.log(result2); // Output: 0

Ngạc nhiên! Toán tử logical OR coi 0 là giá trị falsy và trả về 10, trong khi Nullish Coalescing Operator chỉ kiểm tra null hoặc undefined, vì vậy nó trả về 0.

Ví dụ 3: Nullish Coalescing đan xen

Chúng ta thậm chí có thể chaining nhiều Nullish Coalescing Operators:

let user = {
name: "Alice",
age: null
};

let userAge = user.age ?? user.yearOfBirth ?? "Unknown";

console.log(userAge); // Output: "Unknown"

Ở đây, chúng ta đầu tiên kiểm tra xem user.age không phải là null hoặc undefined. Vì nó là null, chúng ta sau đó kiểm tra user.yearOfBirth. Khi không tồn tại (undefined), chúng ta cuối cùng sử dụng "Unknown".

Short-Circuiting

Một trong những tính năng thú vị nhất của Nullish Coalescing Operator là short-circuiting. Điều này có nghĩa là nếu operand bên trái không phải là null hoặc undefined, operand bên phải sẽ không được đánh giá!

let x = 5;
let y = x ?? console.log("This won't be printed");

console.log(y); // Output: 5

Trong ví dụ này, vì x không phải là null hoặc undefined, console.log() ở bên phải sẽ không bao giờ được thực thi. Điều này có thể rất hữu ích cho việc tối ưu hóa hiệu suất!

Bảng phương pháp

Dưới đây là bảng tóm tắt các phương pháp và khái niệm chính chúng ta đã covered:

Phương pháp/Khái niệm Mô tả Ví dụ
Nullish Coalescing Operator (??) Trả về bên phải khi bên trái là null hoặc undefined let result = null ?? "default"
Short-Circuiting Bên phải không được đánh giá nếu bên trái không phải là null hoặc undefined let y = 5 ?? expensiveOperation()
Chaining Các toán tử ?? có thể được đan xen let z = a ?? b ?? c ?? "default"

Kết luận

Và đó là tất cả, các bạn! Nullish Coalescing Operator là một công cụ mạnh mẽ trong bộ công cụ JavaScript của bạn. Nó giúp bạn viết mã sạch sẽ, biểu đạt hơn, đặc biệt khi dealing với các giá trị có thể là null hoặc undefined.

Nhớ rằng, lập trình là về việc giải quyết vấn đề, và Nullish Coalescing Operator giống như một cây kéo đa năng cho việc xử lý các trường hợp null và undefined. Vậy nên, hãy tiếp tục mã hóa với tự tin!

Trước khi chúng ta kết thúc, hãy để tôi chia sẻ một câu chuyện nhỏ từ kinh nghiệm giảng dạy của tôi. Tôi từng có một học sinh gặp khó khăn trong việc xử lý giá trị null trong mã của họ. Họ sử dụng các câu lệnh if-else phức tạp ở mọi nơi, làm cho mã của họ khó đọc và bảo trì. Khi tôi giới thiệu họ đến Nullish Coalescing Operator, ánh mắt họ sáng lên như thể họ vừa khám phá ra phép thuật. Mã của họ trở nên sạch sẽ ngay lập tức, và họ không ngừng nói về cách nó làm cho cuộc sống của họ dễ dàng hơn. Ai biết được? Có lẽ bạn sẽ có một khoảnh khắc "aha!" tương tự trong hành trình mã hóa của mình!

Tiếp tục luyện tập, giữ vững sự tò mò, và chúc bạn mã hóa vui vẻ!

Credits: Image by storyset