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ù xconst:

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

Tương thích trình duyệt

Xem thêm