diff options
-rw-r--r-- | files/ru/web/javascript/reference/operators/logical_and_assignment/index.md | 75 |
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", "Ложноподобное значение")}} |