From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../operators/logical_and_assignment/index.html | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 files/zh-cn/web/javascript/reference/operators/logical_and_assignment/index.html (limited to 'files/zh-cn/web/javascript/reference/operators/logical_and_assignment') diff --git a/files/zh-cn/web/javascript/reference/operators/logical_and_assignment/index.html b/files/zh-cn/web/javascript/reference/operators/logical_and_assignment/index.html new file mode 100644 index 0000000000..3ed9a1582a --- /dev/null +++ b/files/zh-cn/web/javascript/reference/operators/logical_and_assignment/index.html @@ -0,0 +1,83 @@ +--- +title: Logical AND assignment (&&=) +slug: Web/JavaScript/Reference/Operators/Logical_AND_assignment +translation_of: Web/JavaScript/Reference/Operators/Logical_AND_assignment +--- +
{{jsSidebar("Operators")}}
+ +

The logical AND assignment (x &&= y) operator only assigns if x is {{Glossary("truthy")}}.

+ +
{{EmbedInteractiveExample("pages/js/expressions-logical-and-assignment.html")}}
+ + + +

语法

+ +
expr1 &&= expr2
+
+ +

描述

+ +

Short-circuit evaluation

+ +

The logical AND operator is evaluated left to right, it is tested for possible short-circuit evaluation using the following rule:

+ +

(some falsy expression) && expr is short-circuit evaluated to the falsy expression;

+ +

Short circuit means that the expr part above is not evaluated, hence any side effects of doing so do not take effect (e.g., if expr is a function call, the calling never takes place).

+ +

Logical AND assignment short-circuits as well meaning that x &&= y is equivalent to:

+ +
x && (x = y);
+ +

And not equivalent to the following which would always perform an assignment:

+ +
x = x && y;
+
+ +

例子

+ +

Using logical AND assignment

+ +
let x = 0;
+let y = 1;
+
+x &&= 0; // 0
+x &&= 1; // 0
+y &&= 1; // 1
+y &&= 0; // 0
+
+ +

规范

+ + + + + + + + + + + + + + +
Specification
{{SpecName('Logical Assignment', '#sec-assignment-operators', 'Assignment operators')}}
+ +

浏览器兼容性

+ + + +

{{Compat("javascript.operators.logical_and_assignment")}}

+ +

参见

+ + -- cgit v1.2.3-54-g00ecf