Khi bạn kiểm tra mã JavaScript, bạn có thể tìm thấy một biểu thức bằng dấu câu hỏi kép [??
] như trong mã dưới đây:
alert[username ?? "Guest"];
Toán tử đánh dấu câu hỏi kép được gọi là toán tử kết hợp nullish và nó là một tính năng mới của JavaScript ES2020 cho phép bạn cung cấp giá trị mặc định để sử dụng khi biểu thức biến đánh giá thành null
hoặc undefined
.
Toán tử kết hợp không có hình chữ nhật chỉ đơn giản là trả lại biểu thức ở phía bên phải của nhãn hiệu khi biểu thức ở phía bên trái là null
hoặc undefined
.returns the expression on the right-side of the
mark when the expression on the left side is null
or undefined
.
Ví dụ: mã sau sẽ gán giá trị biến
let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
1 làm giá trị của biến let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
2. Khi giá trị let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
1 là NULL, let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
2 sẽ được gán là let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
5:let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
Hoặc bạn cũng có thể viết nó theo cách này:
let username = undefined ?? "Guest";
console.log[username]; // "Guest"
Không giống như toán tử JavaScript hoặc [
let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
6], toán tử kết hợp vô hiệu hóa đã giành được các giá trị let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
7 với biểu thức bên phải. Một ví dụ về điều này là khi bạn vượt qua một chuỗi trống [let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
8] làm biểu thức bên trái.JavaScript đánh giá một chuỗi trống thành
let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
7 như trong mã bên dưới:let firstName = ""; // empty string evaluates to false in JavaScript
let username = firstName ?? "Guest";
console.log[username]; // ""
Toán tử kết hợp nullish đã được tạo ra vì sẽ có những lúc bạn muốn xem xét các giá trị giả tưởng như
let username = undefined ?? "Guest";
console.log[username]; // "Guest"
0 và chuỗi trống let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
8 là giá trị hợp lệ. Việc sử dụng hoặc toán tử sẽ ngăn bạn trả lại bất kỳ giá trị giả nào.Bằng cách sử dụng toán tử kết hợp nullish, bạn sẽ chỉ thay thế chính xác các giá trị null
và undefined
với giá trị xác định.exactly null
and undefined
values with a defined value.
Sử dụng ?? với || và && nhà khai thác
Vì lý do an toàn, dấu hỏi kép có thể được sử dụng cùng với các toán tử JavaScript hoặc [
let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
6] và [let username = undefined ?? "Guest";
console.log[username]; // "Guest"
5] mà không có dấu ngoặc đơn let username = undefined ?? "Guest";
console.log[username]; // "Guest"
6 ngăn cách các toán tử.Ví dụ: mã sau thử xem có thể sử dụng biến
let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
1 hay let username = undefined ?? "Guest";
console.log[username]; // "Guest"
8 làm giá trị của let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
2 trước khi sử dụng let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
5 làm giá trị của nó:let firstName = "John";
let lastName = "Stone";
let username = firstName || lastName ?? "Guest"; // Error: Unexpected token '??'
console.log[username];
Điều này là do JavaScript won có thể xác định nhà điều hành nào cần đánh giá trước. Bạn cần sử dụng dấu ngoặc đơn để chỉ ra rõ ràng mức độ ưu tiên của các đánh giá.
Mã sau đây sẽ đánh giá các biểu thức bên trong dấu ngoặc đơn:
let firstName = null;
let lastName = undefined;
let username = [firstName || lastName] ?? "Guest";
console.log[username]; // "Guest"
Và đó là cách mà bạn kết hợp người vận hành kết hợp không có một trong hai và hoặc hoặc nhà điều hành.
Sự kết luận
Dấu hỏi kép JavaScript còn được gọi là nhà điều hành kết hợp nullish. Nó có một toán tử chỉ đơn giản là trả về biểu thức bên phải khi biểu thức bên trái là null
hoặc undefined
.
Không giống như hoặc toán tử, toán tử kết hợp nullish là một toán tử tình huống cho phép bạn trả về
let username = undefined ?? "Guest";
console.log[username]; // "Guest"
0 và chuỗi trống let firstName = null;
let username = firstName ?? "Guest";
console.log[username]; // "Guest"
8 như một giá trị hợp lệ cho ứng dụng của bạn.Don Tiết quên sử dụng dấu ngoặc đơn khi bạn kết hợp nó với và / hoặc nhà điều hành 😉