aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--files/ru/web/javascript/reference/operators/logical_and_assignment/index.md75
1 files changed, 75 insertions, 0 deletions
diff --git a/files/ru/web/javascript/reference/operators/logical_and_assignment/index.md b/files/ru/web/javascript/reference/operators/logical_and_assignment/index.md
new file mode 100644
index 0000000000..0759ac2a66
--- /dev/null
+++ b/files/ru/web/javascript/reference/operators/logical_and_assignment/index.md
@@ -0,0 +1,75 @@
+---
+title: Присваивание логического И (&&=)
+slug: Web/JavaScript/Reference/Operators/Logical_AND_assignment
+tags:
+ - JavaScript
+ - Language feature
+ - Logical assignment
+ - Operator
+ - Reference
+browser-compat: javascript.operators.logical_and_assignment
+---
+{{jsSidebar("Operators")}}
+
+Оператор присваивания логического И (`x &&= y`) присваивает значение переменной `x` только в случае, если её текущее значение {{Glossary("truthy", "истиноподобное")}}.
+
+{{EmbedInteractiveExample("pages/js/expressions-logical-and-assignment.html")}}
+
+## Синтаксис
+
+```js
+expr1 &&= expr2
+```
+
+## Описание
+
+### Сокращённое вычисление
+
+[Логический оператор И](/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND) вычисляется слева направо, делая возможным сокращённое вычисление выражения, согласно следующему правилу:
+
+`(ложноподобное выражение) && следующее выражение` — вычисление останавливается на ложноподобном выражении;
+
+Сокращённое вычисление хорошо тем, что `следующее выражение` не будет **вычислено**, т.е. всё, связанное с ним, будет проигнорировано (например, если
+`следующее выражение` представляет собой вызов функции, то он никогда не произойдёт).
+
+Оператор присваивания логического И также поддерживает сокращённое вычисление, поэтому `x &&= y` по сути то же самое, что и выражение ниже:
+
+```js
+x && (x = y);
+```
+
+В отличие от следующего примера, где операция присваивания произойдёт вне зависимости от результата вычисления:
+
+```js example-bad
+x = x && y;
+```
+
+## Примеры
+
+### Использование оператора присваивания логического И
+
+```js
+let x = 0;
+let y = 1;
+
+x &&= 0; // 0
+x &&= 1; // 0
+y &&= 1; // 1
+y &&= 0; // 0
+```
+
+## Спецификации
+
+{{Specifications}}
+
+## Поддержка браузерами
+
+{{Compat}}
+
+## Смотрите также
+
+- [Логическое И (&&)](/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND)
+- [Оператор нулевого слияния (`??`)](/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator)
+- [Присваивание побитового И (`&=`)](/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_AND_assignment)
+- {{Glossary("Truthy", "Истиноподобное значение")}}
+- {{Glossary("Falsy", "Ложноподобное значение")}}