Logical AND assignment (&&=)
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2020.
Toán tử logical AND assignment (&&=) chỉ tính toán toán hạng bên phải và gán cho toán hạng bên trái nếu toán hạng bên trái là truthy.
Try it
let a = 1;
let b = 0;
a &&= 2;
console.log(a);
// Expected output: 2
b &&= 2;
console.log(b);
// Expected output: 0
Cú pháp
js
x &&= y
Mô tả
Logical AND assignment short-circuits, nghĩa là x &&= y tương đương với x && (x = y), ngoại trừ biểu thức x chỉ được tính một lần.
Không có phép gán nào được thực hiện nếu toán hạng bên trái không phải truthy, do cơ chế short-circuit của toán tử logical AND. Ví dụ, đoạn mã dưới đây không ném lỗi dù x là const:
js
const x = 0;
x &&= 2;
Đoạn mã dưới đây cũng không kích hoạt setter:
js
const x = {
get value() {
return 0;
},
set value(v) {
console.log("Setter called");
},
};
x.value &&= 2;
Thực tế, nếu x không phải truthy thì y hoàn toàn không được tính toán.
js
const x = 0;
x &&= console.log("y evaluated");
// Logs nothing
Ví dụ
>Sử dụng logical AND assignment
js
let x = 0;
let y = 1;
x &&= 0; // 0
x &&= 1; // 0
y &&= 1; // 1
y &&= 0; // 0
Thông số kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-assignment-operators> |