Логическое присваивание И (&&=)
Базовый уровень Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2020 года.
Оператор логического присваивания И (&&=) вычисляет правый операнд и присваивает его левому, только если левый операнд является truthy (истинным).
Попробуйте
let a = 1; let b = 0; a &&= 2; console.log(a); // Expected output: 2 b &&= 2; console.log(b); // Expected output: 0
Синтаксис
x &&= y
Описание
Логическое присваивание И кратко замыкается, что означает, что x &&= y эквивалентно x && (x = y), за исключением того, что выражение x вычисляется только один раз.
Присваивание не выполняется, если левая часть не является истинной, из-за краткого замыкания логического оператора И. Например, следующее не вызывает ошибку, несмотря на то, что x является const:
const x = 0; x &&= 2;
Ниже также не сработает сеттер:
const x = {
get value() {
return 0;
},
set value(v) {
console.log("Setter called");
},
};
x.value &&= 2;
Фактически, если x не является истинным, y вообще не вычисляется.
const x = 0;
x &&= console.log("y evaluated");
// Logs nothing
Примеры
Использование логического присваивания И
let x = 0; let y = 1; x &&= 0; // 0 x &&= 1; // 0 y &&= 1; // 1 y &&= 0; // 0
Спецификации
Совместимость с браузерами
| Настольные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
logical_and_assignment |
85 |
85 |
79 |
71 |
14 |
85 |
79 |
60 |
14 |
14.0 |
85 |
14 |
1.0.0 |
1.2 |
15.0.0 |
См. также
- Логическое И (
&&) - Оператор нулевого слияния (
??) - Побитовое присваивание И (
&=) - Truthy (истинный)
- Falsy (ложный)
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND_assignment