aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/javascript/reference/operators
diff options
context:
space:
mode:
Diffstat (limited to 'files/zh-cn/web/javascript/reference/operators')
-rw-r--r--files/zh-cn/web/javascript/reference/operators/addition/index.html (renamed from files/zh-cn/web/javascript/reference/operators/相加/index.html)0
-rw-r--r--files/zh-cn/web/javascript/reference/operators/arithmetic_operators/index.html302
-rw-r--r--files/zh-cn/web/javascript/reference/operators/assignment_operators/index.html413
-rw-r--r--files/zh-cn/web/javascript/reference/operators/async_function/index.html (renamed from files/zh-cn/web/javascript/reference/operators/async允许声明一个函数为一个包含异步操作的函数/index.html)0
-rw-r--r--files/zh-cn/web/javascript/reference/operators/bitwise_and/index.html (renamed from files/zh-cn/web/javascript/reference/operators/按位与/index.html)0
-rw-r--r--files/zh-cn/web/javascript/reference/operators/bitwise_operators/index.html756
-rw-r--r--files/zh-cn/web/javascript/reference/operators/comparison_operators/index.html278
-rw-r--r--files/zh-cn/web/javascript/reference/operators/decrement/index.html (renamed from files/zh-cn/web/javascript/reference/operators/自减/index.html)0
-rw-r--r--files/zh-cn/web/javascript/reference/operators/equality/index.html (renamed from files/zh-cn/web/javascript/reference/operators/相等/index.html)0
-rw-r--r--files/zh-cn/web/javascript/reference/operators/logical_and/index.html (renamed from files/zh-cn/web/javascript/reference/operators/逻辑和/index.html)0
-rw-r--r--files/zh-cn/web/javascript/reference/operators/logical_operators/index.html238
-rw-r--r--files/zh-cn/web/javascript/reference/operators/optional_chaining/index.html (renamed from files/zh-cn/web/javascript/reference/operators/可选链/index.html)0
-rw-r--r--files/zh-cn/web/javascript/reference/operators/pipeline_operator/index.html (renamed from files/zh-cn/web/javascript/reference/operators/管道操作符/index.html)0
-rw-r--r--files/zh-cn/web/javascript/reference/operators/remainder/index.html (renamed from files/zh-cn/web/javascript/reference/operators/取余/index.html)0
14 files changed, 0 insertions, 1987 deletions
diff --git a/files/zh-cn/web/javascript/reference/operators/相加/index.html b/files/zh-cn/web/javascript/reference/operators/addition/index.html
index 6da432b4e6..6da432b4e6 100644
--- a/files/zh-cn/web/javascript/reference/operators/相加/index.html
+++ b/files/zh-cn/web/javascript/reference/operators/addition/index.html
diff --git a/files/zh-cn/web/javascript/reference/operators/arithmetic_operators/index.html b/files/zh-cn/web/javascript/reference/operators/arithmetic_operators/index.html
deleted file mode 100644
index 917ac03b06..0000000000
--- a/files/zh-cn/web/javascript/reference/operators/arithmetic_operators/index.html
+++ /dev/null
@@ -1,302 +0,0 @@
----
-title: 算术运算符
-slug: Web/JavaScript/Reference/Operators/Arithmetic_Operators
-tags:
- - JavaScript
- - Operator
-translation_of: Web/JavaScript/Reference/Operators
-translation_of_original: Web/JavaScript/Reference/Operators/Arithmetic_Operators
----
-<div>{{jsSidebar("Operators")}}</div>
-
-<p><strong>算术运算符</strong>以数值(字面量或变量)作为其操作数,并返回一个单个数值。标准算术运算符是加法(+),减法(-),乘法(*)和除法(/)。</p>
-
-<div>{{EmbedInteractiveExample("pages/js/expressions-arithmetic.html")}}</div>
-
-
-
-<h2 id="加法">加法 (+)</h2>
-
-<p>加法运算符的作用是数值求和,或者字符串拼接。</p>
-
-<h3 id="语法">语法</h3>
-
-<pre class="syntaxbox notranslate"><strong>运算符:</strong> x + y
-</pre>
-
-<h3 id="示例">示例</h3>
-
-<pre class="brush: js notranslate">// Number + Number -&gt; 数字相加
-1 + 2 // 3
-
-// Boolean + Number -&gt; 数字相加
-true + 1 // 2
-
-// Boolean + Boolean -&gt; 数字相加
-false + false // 0
-
-// Number + String -&gt; 字符串连接
-5 + "foo" // "5foo"
-
-// String + Boolean -&gt; 字符串连接
-"foo" + false // "foofalse"
-
-// String + String -&gt; 字符串连接
-"foo" + "bar" // "foobar"
-</pre>
-
-<h2 id="减法_-">减法 (-)</h2>
-
-<p>减法运算符使两个操作数相减,结果是它们的差值。</p>
-
-<h3 id="语法_2">语法</h3>
-
-<pre class="syntaxbox notranslate"><strong>运算符:</strong> x - y
-</pre>
-
-<h3 id="示例_2">示例</h3>
-
-<pre class="brush: js notranslate">5 - 3 // 2
-3 - 5 // -2
-"foo" - 3 // NaN</pre>
-
-<h2 id="除法">除法 (/)</h2>
-
-<p>除法运算符的结果是操作数的商 ,左操作数是被除数,右操作数是除数。</p>
-
-<h3 id="语法_3">语法</h3>
-
-<pre class="syntaxbox notranslate"><strong>运算符:</strong> x / y
-</pre>
-
-<h3 id="示例_3">示例</h3>
-
-<pre class="brush: js notranslate">1 / 2 // 在 JavaScript 中返回 0.5
-1 / 2 // 在 Java 中返回 0
-// (不需要数字是明确的浮点数)
-
-1.0 / 2.0 // 在 JavaScript 或 Java 中都返回 0.5
-
-2.0 / 0 // 在 JavaScript 中返回 Infinity
-2.0 / 0.0 // 同样返回 Infinity
-2.0 / -0.0 // 在 JavaScript 中返回 -Infinity</pre>
-
-<h2 id="乘法_*">乘法 (*)</h2>
-
-<p>乘法运算符的结果是操作数的乘积。</p>
-
-<h3 id="语法_4">语法</h3>
-
-<pre class="syntaxbox notranslate"><strong>运算符:</strong> x * y
-</pre>
-
-<h3 id="示例_4">示例</h3>
-
-<pre class="brush: js notranslate">2 * 2 // 4
--2 * 2 // -4
-Infinity * 0 // NaN
-Infinity * Infinity // Infinity
-"foo" * 2 // NaN
-</pre>
-
-<h2 id="求余">求余 (%)</h2>
-
-<p>求余运算符返回第一个操作数对第二个操作数的模,即 <code>var1</code> 对 <code>var2</code> 取模,其中 <code>var1</code> 和 <code>var2</code> 是变量。取模功能就是 <code>var1</code> 除以 <code>var2</code> 的整型余数。</p>
-
-<h3 id="语法_5">语法</h3>
-
-<pre class="syntaxbox notranslate"><strong>运算符:</strong> var1 % var2
-</pre>
-
-<h3 id="示例_5">示例</h3>
-
-<pre class="brush: js notranslate">12 % 5 // 2
--1 % 2 // -1
-NaN % 2 // NaN
-1 % 2 // 1
-2 % 3 // 2
--4 % 2 // -0
-5.5 % 2 // 1.5
-</pre>
-
-<h2 id="幂_**">幂 (**)</h2>
-
-<p>幂运算符返回第一个操作数做底数,第二个操作数做指数的乘方。即,<code>var1</code><sup><code>var2</code></sup>,其中 <code>var1</code> 和 <code>var2</code> 是其两个操作数。幂运算符是右结合的。<code>a ** b ** c</code> 等同于 <code>a ** (b ** c)</code>。</p>
-
-<h3 id="语法_6">语法</h3>
-
-<pre class="syntaxbox notranslate"><strong>运算符:</strong> var1 ** var2
-</pre>
-
-<h3 id="注解">注解</h3>
-
-<p>包括 PHP 或 Python 等的大多数语言中,都包含幂运算符(一般来说符号是 ^ 或者 **)。这些语言中的幂运算符有着比其他的单目运算符(如一元 + 或一元 - )更高的优先级。但是作为例外,在 Bash 中,**  运算符被设计为比单目运算符优先级更低。在最新的 JavaScript(ES2016) 中,禁止使用带歧义的幂运算表达式。比如,底数前不能紧跟一元运算符(<code>+/-/~/!/delete/void/typeof</code>)。</p>
-
-<pre class="brush: js notranslate">-2 ** 2;
-// 在 Bash 中等于 4 ,而在其他语言中一般等于 -4
-// 在 JavaScript 中是错误的,因为这会有歧义
-
--(2 ** 2);
-// -4 在 JavaScript 中能够明显体现出作者的意图</pre>
-
-<h3 id="示例_6">示例</h3>
-
-<pre class="brush: js notranslate">2 ** 3 // 8
-3 ** 2 // 9
-3 ** 2.5 // 15.588457268119896
-10 ** -1 // 0.1
-NaN ** 2 // NaN
-
-2 ** 3 ** 2 // 512
-2 ** (3 ** 2) // 512
-(2 ** 3) ** 2 // 64
-</pre>
-
-<p>如果要反转求幂表达式结果的符号,你可以采用这样的方式:</p>
-
-<pre class="brush: js notranslate">-(2 ** 2) // -4</pre>
-
-<p>强制求幂表达式的基数为负数:</p>
-
-<pre class="brush: js notranslate">(-2) ** 2 // 4</pre>
-
-<h2 id="递增">递增 (++)</h2>
-
-<p>递增运算符为其操作数增加1,返回一个数值。</p>
-
-<ul>
- <li>如果使用后置(postfix),即运算符位于操作数的后面(如 x++),那么将会在递增前返回数值。</li>
- <li>如果使用前置(prefix),即运算符位于操作数的前面(如 ++x),那么将会在递增后返回数值。</li>
-</ul>
-
-<h3 id="语法_7">语法</h3>
-
-<pre class="syntaxbox notranslate"><strong>运算符:</strong> x++ 或者 ++x
-</pre>
-
-<h3 id="示例_7">示例</h3>
-
-<pre class="brush: js notranslate">// 后置
-var x = 3;
-y = x++;
-// y = 3, x = 4
-
-// 前置
-var a = 2;
-b = ++a;
-// a = 3, b = 3
-</pre>
-
-<h2 id="递减_--">递减 (--)</h2>
-
-<p>递减运算符将其操作数减去1,并返回一个数值。</p>
-
-<ul>
- <li>如果后置使用(如 x--),则在递减前返回数值。</li>
- <li>如果前置使用(如 --x),则在递减后返回数值。</li>
-</ul>
-
-<h3 id="语法_8">语法</h3>
-
-<pre class="syntaxbox notranslate"><strong>运算符:</strong> x-- or --x
-</pre>
-
-<h3 id="示例_8">示例</h3>
-
-<pre class="brush: js notranslate">// 后置
-var x = 3;
-y = x--; // y = 3, x = 2
-
-// 前置
-var a = 2;
-b = --a; // a = 1, b = 1
-</pre>
-
-<h2 id="一元负号_-">一元负号 (-)</h2>
-
-<p>一元负号运算符位于操作数前面,并转换操作数的符号。</p>
-
-<h3 id="语法_9">语法</h3>
-
-<pre class="syntaxbox notranslate"><strong>运算符:</strong> -x
-</pre>
-
-<h3 id="示例_9">示例</h3>
-
-<pre class="brush: js notranslate">var x = 3;
-y = -x; // y = -3, x = 3
-</pre>
-
-<h2 id="一元正号">一元正号 (+)</h2>
-
-<p>一元正号运算符位于其操作数前面,计算其操作数的数值,如果操作数不是一个数值,会尝试将其转换成一个数值。 尽管一元负号也能转换非数值类型,但是一元正号是转换其他对象到数值的最快方法,也是最推荐的做法,因为它不会对数值执行任何多余操作。它可以将字符串转换成整数和浮点数形式,也可以转换非字符串值 <code>true</code>,<code>false</code> <code>和</code> <code>null</code>。小数和十六进制格式字符串也可以转换成数值。负数形式字符串也可以转换成数值(对于十六进制不适用)。如果它不能解析一个值,则计算结果为 <a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/NaN">NaN</a>。</p>
-
-<h3 id="语法_10">语法</h3>
-
-<pre class="syntaxbox notranslate"><strong>运算符:</strong> +x
-</pre>
-
-<h3 id="示例_10">示例</h3>
-
-<pre class="brush: js notranslate">+3 // 3
-+"3" // 3
-+true // 1
-+false // 0
-+null // 0
-+function(val){ return val;} //NaN</pre>
-
-<h2 id="规范">规范</h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">Specification</th>
- <th scope="col">Status</th>
- <th scope="col">Comment</th>
- </tr>
- <tr>
- <td>{{SpecName('ES1')}}</td>
- <td>{{Spec2('ES1')}}</td>
- <td>Initial definition.</td>
- </tr>
- <tr>
- <td>{{SpecName('ES5.1', '#sec-11.3')}}</td>
- <td>{{Spec2('ES5.1')}}</td>
- <td>Defined in several sections of the specification: <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.6">Additive operators</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.5">Multiplicative operators</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.3">Postfix expressions</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.4">Unary operators</a>.</td>
- </tr>
- <tr>
- <td>{{SpecName('ES2015', '#sec-postfix-expressions')}}</td>
- <td>{{Spec2('ES2015')}}</td>
- <td>Defined in several sections of the specification: <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-additive-operators">Additive operators</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-multiplicative-operators">Multiplicative operators</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-postfix-expressions">Postfix expressions</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-unary-operators">Unary operators</a>.</td>
- </tr>
- <tr>
- <td>{{SpecName('ES2016', '#sec-postfix-expressions')}}</td>
- <td>{{Spec2('ES2016')}}</td>
- <td>Added <a href="https://github.com/rwaldron/exponentiation-operator">Exponentiation operator</a>.</td>
- </tr>
- <tr>
- <td>{{SpecName('ES2017', '#sec-postfix-expressions')}}</td>
- <td>{{Spec2('ES2017')}}</td>
- <td></td>
- </tr>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-additive-operators')}}</td>
- <td>{{Spec2('ESDraft')}}</td>
- <td></td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="浏览器兼容性">浏览器兼容性</h2>
-
-<div class="hidden">
-<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
-</div>
-
-<p>{{Compat("javascript.operators.arithmetic")}}</p>
-
-<h2 id="相关链接">相关链接</h2>
-
-<ul>
- <li><a href="/zh-CN/docs/Web/JavaScript/Reference/Operators/Assignment_Operators">赋值运算符</a></li>
-</ul>
diff --git a/files/zh-cn/web/javascript/reference/operators/assignment_operators/index.html b/files/zh-cn/web/javascript/reference/operators/assignment_operators/index.html
deleted file mode 100644
index 66ae471cde..0000000000
--- a/files/zh-cn/web/javascript/reference/operators/assignment_operators/index.html
+++ /dev/null
@@ -1,413 +0,0 @@
----
-title: 赋值运算符
-slug: Web/JavaScript/Reference/Operators/Assignment_Operators
-tags:
- - JavaScript
- - 运算符
-translation_of: Web/JavaScript/Reference/Operators#Assignment_operators
-translation_of_original: Web/JavaScript/Reference/Operators/Assignment_Operators
----
-<div>{{jsSidebar("Operators")}}</div>
-
-<p>赋值运算符(<strong>assignment operator</strong>)基于右值(right operand)的值,给左值(left operand)赋值。</p>
-
-<div>{{EmbedInteractiveExample("pages/js/expressions-assignment.html")}}</div>
-
-<p class="hidden">本文的交互示例的源代码存储在GithHub仓库。如果你愿意贡献更多交互示例,请克隆仓库 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> 并提交 pull request.</p>
-
-<h2 id="概述">概述</h2>
-
-<p>基本的赋值运算符是等号(<code>=</code>),该运算符把它右边的运算值赋给左边。即,<code>x = y</code> 把 <code>y</code> 的值赋给 <code>x</code>。 其他的赋值运算符通常是标准运算符的简写形式,如下面的定义与示例。 </p>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th>名称</th>
- <th>简写形式</th>
- <th>含义</th>
- </tr>
- <tr>
- <td><a href="#Assignment">赋值(Assignment)</a></td>
- <td><code>x = y</code></td>
- <td><code>x = y</code></td>
- </tr>
- <tr>
- <td><a href="#Addition_assignment">加赋值(Addition assignment)</a></td>
- <td><code>x += y</code></td>
- <td><code>x = x + y</code></td>
- </tr>
- <tr>
- <td><a href="#Subtraction_assignment">减赋值(Subtraction assignment)</a></td>
- <td><code>x -= y</code></td>
- <td><code>x = x - y</code></td>
- </tr>
- <tr>
- <td><a href="#Multiplication_assignment">乘赋值(Multiplication assigment)</a></td>
- <td><code>x *= y</code></td>
- <td><code>x = x * y</code></td>
- </tr>
- <tr>
- <td><a href="#Division_assignment">除赋值(Division assignment)</a></td>
- <td><code>x /= y</code></td>
- <td><code>x = x / y</code></td>
- </tr>
- <tr>
- <td><a href="#Remainder_assignment">模赋值(Remainder assignment)</a></td>
- <td><code>x %= y</code></td>
- <td><code>x = x % y</code></td>
- </tr>
- <tr>
- <td><a href="#Exponentiation_assignment">指数赋值(Exponentiation assignment)</a></td>
- <td><code>x **= y</code></td>
- <td><code>x = x ** y</code></td>
- </tr>
- <tr>
- <td><a href="#Left_shift_assignment">左移赋值(Left shift assignment)</a></td>
- <td><code>x &lt;&lt;= y</code></td>
- <td><code>x = x &lt;&lt; y</code></td>
- </tr>
- <tr>
- <td><a href="#Right_shift_assignment">右移赋值(Right shift assignment)</a></td>
- <td><code>x &gt;&gt;= y</code></td>
- <td><code>x = x &gt;&gt; y</code></td>
- </tr>
- <tr>
- <td><a href="#Unsigned_right_shift_assignment">无符号右移赋值(Unsigned right shift assignment)</a></td>
- <td><code>x &gt;&gt;&gt;= y</code></td>
- <td><code>x = x &gt;&gt;&gt; y</code></td>
- </tr>
- <tr>
- <td><a href="#Bitwise_AND_assignment">按位与赋值(Bitwise AND assignment)</a></td>
- <td><code>x &amp;= y</code></td>
- <td><code>x = x &amp; y</code></td>
- </tr>
- <tr>
- <td><a href="#Bitwise_XOR_assignment">按位异或赋值(Bitwise XOR assignment)</a></td>
- <td><code>x ^= y</code></td>
- <td><code>x = x ^ y</code></td>
- </tr>
- <tr>
- <td><a href="#Bitwise_OR_assignment">按位或赋值(Bitwise OR assignment)</a></td>
- <td><code>x |= y</code></td>
- <td><code>x = x | y</code></td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="赋值"><a name="Assignment">赋值</a></h2>
-
-<p>简单的赋值运算符,把一个值赋给一个变量。为了把一个值赋给多个变量,可以以链式使用赋值运算符。参考下例:</p>
-
-<h4 id="语法">语法</h4>
-
-<pre class="syntaxbox"><strong>Operator:</strong> x = y
-</pre>
-
-<h4 id="示例">示例</h4>
-
-<pre class="brush: js">// Assuming the following variables
-// x = 5
-// y = 10
-// z = 25
-
-x = y // x is 10
-x = y = z // x, y and z are all 25
-</pre>
-
-<h3 id="加赋值(Addition_assignment)"><a name="Addition_assignment">加赋值(Addition assignment)</a></h3>
-
-<p>加赋值运算符把一个右值与一个变量相加,然后把相加的结果赋给该变量。两个操作数的类型决定了加赋值运算符的行为。算术相加或字符串连接都有可能。更多细节参考 {{jsxref("Operators/Arithmetic_Operators", "addition operator", "#Addition", 1)}}。</p>
-
-<h4 id="语法_2">语法</h4>
-
-<pre class="syntaxbox"><strong>Operator:</strong> x += y
-<strong>Meaning:</strong> x = x + y
-</pre>
-
-<h4 id="示例_2">示例</h4>
-
-<pre class="brush: js">// 定义下列变量
-// foo = 'foo'
-// bar = 5
-// baz = true
-
-
-// Number + Number -&gt; addition
-bar += 2 // 7
-
-// Boolean + Number -&gt; addition
-baz += 1 // 2
-
-// Boolean + Boolean -&gt; addition
-baz += false // 1
-
-// Number + String -&gt; concatenation
-bar += 'foo' // "5foo"
-
-// String + Boolean -&gt; concatenation
-foo += false // "foofalse"
-
-// String + String -&gt; concatenation
-foo += 'bar' // "foobar"
-</pre>
-
-<h3 id="减赋值(Subtraction_assignment)"><a name="Subtraction_assignment">减赋值(Subtraction assignment)</a></h3>
-
-<p>减赋值运算符使一个变量减去右值,然后把结果赋给该变量。更多细节查看 {{jsxref("Operators/Arithmetic_Operators", "subtraction operator", "#Subtraction", 1)}} 。</p>
-
-<h4 id="语法_3">语法</h4>
-
-<pre class="syntaxbox"><strong>Operator:</strong> x -= y
-<strong>Meaning:</strong> x = x - y
-</pre>
-
-<h4 id="示例_3">示例</h4>
-
-<pre class="brush: js">// 假定已定义了下面的变量
-// bar = 5
-
-bar -= 2 // 3
-bar -= "foo" // NaN
-</pre>
-
-<h3 id="乘赋值(Multiplication_assignment)"><a name="Multiplication_assignment">乘赋值(Multiplication assignment)</a></h3>
-
-<p>乘赋值运算符使一个变量乘以右值,然后把相成的结果赋给该变量。更多细节查看 {{jsxref("Operators/Arithmetic_Operators", "multiplication operator", "#Multiplication", 1)}}。</p>
-
-<h4 id="语法_4">语法</h4>
-
-<pre class="syntaxbox"><strong>Operator:</strong> x *= y
-<strong>Meaning:</strong> x = x * y
-</pre>
-
-<h4 id="示例_4">示例</h4>
-
-<pre class="brush: js">// 假定已定义了下面的变量
-// bar = 5
-
-bar *= 2 // 10
-bar *= 'foo' // NaN
-</pre>
-
-<h3 id="除赋值(Division_assignment)"><a name="Division_assignment">除赋值(Division assignment)</a></h3>
-
-<p>除赋值运算符使一个变量除以右值,然后把结果赋给该变量。更多细节查看 {{jsxref("Operators/Arithmetic_Operators", "division operator", "#Division", 1)}}。</p>
-
-<h4 id="语法_5">语法</h4>
-
-<pre class="syntaxbox"><strong>Operator:</strong> x /= y
-<strong>Meaning:</strong> x = x / y
-</pre>
-
-<h4 id="示例_5">示例</h4>
-
-<pre class="brush: js">// 假定已定义了下面的变量
-// bar = 5
-
-bar /= 2 // 2.5
-bar /= "foo" // NaN
-bar /= 0 // Infinity
-</pre>
-
-<h3 id="模赋值(Remainder_assignment)"><a name="Remainder_assignment">模赋值(Remainder assignment)</a></h3>
-
-<p>模赋值运算符使一个变量除以右值,然后把余数赋给该变量。更多细节查看 {{jsxref("Operators/Arithmetic_Operators", "remainder operator", "#Remainder", 1)}}。</p>
-
-<h4 id="语法_6">语法</h4>
-
-<pre class="syntaxbox"><strong>Operator:</strong> x %= y
-<strong>Meaning:</strong> x = x % y
-</pre>
-
-<h4 id="示例_6">示例</h4>
-
-<pre class="brush: js">// Assuming the following variable
-// bar = 5
-
-bar %= 2 // 1
-bar %= 'foo' // NaN
-bar %= 0 // NaN
-</pre>
-
-<h3 id="指数赋值(Exponentiation_assignment)"><a id="Exponentiation_assignment" name="Exponentiation_assignment">指数赋值(Exponentiation assignment)</a></h3>
-
-<p>指数赋值运算符使一个变量为底数、以右值为指数的指数运算(乘方)结果赋给该变量。更多细节查看 {{jsxref("Operators/Arithmetic_Operators", "算术运算符", "#Exponentiation", 1)}}。</p>
-
-<h4 id="语法_7">语法</h4>
-
-<pre class="syntaxbox"><strong>语法:</strong> x **= y
-<strong>含义:</strong> x = x ** y
-</pre>
-
-<h4 id="示例_7">示例</h4>
-
-<pre class="brush: js">// Assuming the following variable
-// bar = 5
-
-bar **= 2 // 25
-bar **= 'foo' // NaN</pre>
-
-<h3 id="左移赋值(Left_shift_assignment)"><a name="Left_shift_assignment">左移赋值(Left shift assignment)</a></h3>
-
-<p>左移赋值运算符使变量向左移动指定位数的比特位,然后把结果赋给该变量。更多细节查看 {{jsxref("Operators/Bitwise_Operators", "left shift operator", "#Left_shift", 1)}}。</p>
-
-<h4 id="语法_8">语法</h4>
-
-<pre class="syntaxbox"><strong>Operator:</strong> x &lt;&lt;= y
-<strong>Meaning:</strong> x = x &lt;&lt; y
-</pre>
-
-<h4 id="示例_8">示例</h4>
-
-<pre class="brush: js">var bar = 5; // (00000000000000000000000000000101)
-bar &lt;&lt;= 2; // 20 (00000000000000000000000000010100)
-</pre>
-
-<h3 id="右移赋值(Right_shift_assignment)"><a name="Right_shift_assignment">右移赋值(Right shift assignment)</a></h3>
-
-<p>右移赋值运算符使变量向右移指定位数的比特位,然后把结果赋给该变量。更多细节查看 {{jsxref("Operators/Bitwise_Operators", "right shift operator", "#Right_shift", 1)}}。</p>
-
-<h4 id="语法_9">语法</h4>
-
-<pre class="syntaxbox"><strong>Operator:</strong> x &gt;&gt;= y
-<strong>Meaning:</strong> x = x &gt;&gt; y
-</pre>
-
-<h4 id="示例_9">示例</h4>
-
-<pre class="brush: js">var bar = 5; // (00000000000000000000000000000101)
-bar &gt;&gt;= 2; // 1 (00000000000000000000000000000001)
-
-var bar = -5; // (-00000000000000000000000000000101)
-bar &gt;&gt;= 2; // -2 (-00000000000000000000000000000010)
-</pre>
-
-<h3 id="无符号右移赋值(Unsigned_right_shift_assignment)"><a name="Unsigned_right_shift_assignment">无符号右移赋值(Unsigned right shift assignment)</a></h3>
-
-<p>无符号右移赋值运算符向右移动指定数量的比特位,然后把结果赋给变量。更多细节查看 {{jsxref("Operators/Bitwise_Operators", " unsigned right shift operator", "#Unsigned_right_shift", 1)}}。</p>
-
-<h4 id="语法_10">语法</h4>
-
-<pre class="syntaxbox"><strong>Operator:</strong> x &gt;&gt;&gt;= y
-<strong>Meaning:</strong> x = x &gt;&gt;&gt; y
-</pre>
-
-<h4 id="示例_10">示例</h4>
-
-<pre class="brush: js">var bar = 5; // (00000000000000000000000000000101)
-bar &gt;&gt;&gt;= 2; // 1 (00000000000000000000000000000001)
-
-var bar = -5; // (-00000000000000000000000000000101)
-bar &gt;&gt;&gt;= 2; // 1073741822 (00111111111111111111111111111110)</pre>
-
-<h3 id="按位与赋值(Bitwise_AND_assignment)"><a name="Bitwise_AND_assignment">按位与赋值(Bitwise AND assignment)</a></h3>
-
-<p>按位与赋值运算符使用两个操作值的二进制表示,执行按位与运算,并把结果赋给变量。更多细节查看 {{jsxref("Operators/Bitwise_Operators", "bitwise AND operator", "#Bitwise_AND", 1)}}。</p>
-
-<h4 id="语法_11">语法</h4>
-
-<pre class="syntaxbox"><strong>Operator:</strong> x &amp;= y
-<strong>Meaning:</strong> x = x &amp; y
-</pre>
-
-<h4 id="示例_11">示例</h4>
-
-<pre class="brush: js">var bar = 5;
-// 5: 00000000000000000000000000000101
-// 2: 00000000000000000000000000000010
-bar &amp;= 2; // 0
-</pre>
-
-<h3 id="按位异或赋值(Bitwise_XOR_assignment)"><a name="Bitwise_XOR_assignment">按位异或赋值(Bitwise XOR assignment)</a></h3>
-
-<p>按位异或赋值运算符使用两个操作值的二进制表示,执行二进制异或运算,并把结果赋给变量。更多细节查看 {{jsxref("Operators/Bitwise_Operators", "bitwise XOR operator", "#Bitwise_XOR", 1)}}。</p>
-
-<h4 id="语法_12">语法</h4>
-
-<pre class="syntaxbox"><strong>Operator:</strong> x ^= y
-<strong>Meaning:</strong> x = x ^ y
-</pre>
-
-<h4 id="示例_12">示例</h4>
-
-<pre class="brush: js">var bar = 5;
-bar ^= 2; // 7
-// 5: 00000000000000000000000000000101
-// 2: 00000000000000000000000000000010
-// -----------------------------------
-// 7: 00000000000000000000000000000111
-</pre>
-
-<h3 id="按位或赋值(Bitwise_OR_assignment)"><a name="Bitwise_OR_assignment">按位或赋值(Bitwise OR assignment)</a></h3>
-
-<p>按位或赋值运算符使用两个操作值的二进制表示,执行按位或运算,并把结果赋给变量。更多细节查看 {{jsxref("Operators/Bitwise_Operators", "bitwise OR operator", "#Bitwise_OR", 1)}}。</p>
-
-<h4 id="语法_13">语法</h4>
-
-<pre class="syntaxbox"><strong>Operator:</strong> x |= y
-<strong>Meaning:</strong> x = x | y
-</pre>
-
-<h4 id="示例_13">示例</h4>
-
-<pre class="brush: js">var bar = 5;
-bar |= 2; // 7
-// 5: 00000000000000000000000000000101
-// 2: 00000000000000000000000000000010
-// -----------------------------------
-// 7: 00000000000000000000000000000111
-</pre>
-
-<h2 id="示例_14">示例</h2>
-
-<h3 id="带有赋值运算符的左值(Left_operand)">带有赋值运算符的左值(Left operand)</h3>
-
-<p>在某些不常见的情况下,赋值运算符(如<code> x += y</code>)并不等同于表达式( <code>x = x + y</code>)。当一个赋值运算符的左值包含有一个赋值运算符时,左值只会被求值一次。例如:</p>
-
-<pre class="brush: js">a[i++] += 5 // i 执行一次求值
-a[i++] = a[i++] + 5 // i 执行两次求值
-</pre>
-
-<h2 id="规范">规范</h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">Specification</th>
- <th scope="col">Status</th>
- <th scope="col">Comment</th>
- </tr>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
- <td>{{Spec2('ESDraft')}}</td>
- <td></td>
- </tr>
- <tr>
- <td>{{SpecName('ES2015', '#sec-assignment-operators', 'Assignment operators')}}</td>
- <td>{{Spec2('ES2015')}}</td>
- <td></td>
- </tr>
- <tr>
- <td>{{SpecName('ES5.1', '#sec-11.13', 'Assignment operators')}}</td>
- <td>{{Spec2('ES5.1')}}</td>
- <td></td>
- </tr>
- <tr>
- <td>{{SpecName('ES1', '#sec-11.13', 'Assignment operators')}}</td>
- <td>{{Spec2('ES1')}}</td>
- <td>Initial definition.</td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="浏览器兼容性">浏览器兼容性</h2>
-
-<div class="hidden">该兼容表是由结构化数据生成。如果你愿意贡献数据,请克隆仓库 <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> 并提交 pull request.</div>
-
-<p>{{Compat("javascript.operators.assignment")}}</p>
-
-<h2 id="相关链接">相关链接</h2>
-
-<ul>
- <li><a href="/zh-CN/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators">算术运算符</a></li>
-</ul>
diff --git a/files/zh-cn/web/javascript/reference/operators/async允许声明一个函数为一个包含异步操作的函数/index.html b/files/zh-cn/web/javascript/reference/operators/async_function/index.html
index eebfd13ca2..eebfd13ca2 100644
--- a/files/zh-cn/web/javascript/reference/operators/async允许声明一个函数为一个包含异步操作的函数/index.html
+++ b/files/zh-cn/web/javascript/reference/operators/async_function/index.html
diff --git a/files/zh-cn/web/javascript/reference/operators/按位与/index.html b/files/zh-cn/web/javascript/reference/operators/bitwise_and/index.html
index 20eece2691..20eece2691 100644
--- a/files/zh-cn/web/javascript/reference/operators/按位与/index.html
+++ b/files/zh-cn/web/javascript/reference/operators/bitwise_and/index.html
diff --git a/files/zh-cn/web/javascript/reference/operators/bitwise_operators/index.html b/files/zh-cn/web/javascript/reference/operators/bitwise_operators/index.html
deleted file mode 100644
index 4bdd7a1bc7..0000000000
--- a/files/zh-cn/web/javascript/reference/operators/bitwise_operators/index.html
+++ /dev/null
@@ -1,756 +0,0 @@
----
-title: 按位操作符
-slug: Web/JavaScript/Reference/Operators/Bitwise_Operators
-tags:
- - js ^ & Bitwise Operators
-translation_of: Web/JavaScript/Reference/Operators
-translation_of_original: Web/JavaScript/Reference/Operators/Bitwise_Operators
----
-<div>{{jsSidebar("Operators")}}</div>
-
-<h2 id="Summary" name="Summary">概述</h2>
-
-<p><strong>按位操作符(Bitwise operators)</strong> 将其操作数(operands)当作32位的比特序列(由0和1组成),而不是十进制、十六进制或八进制<a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number" title="/en-US/docs/JavaScript/Reference/Global_Objects/Number">数值</a>。例如,十进制数9,用二进制表示则为1001。按位操作符操作数字的二进制形式,但是返回值依然是标准的JavaScript数值。</p>
-
-<p>下面的表格总结了JavaScript中的按位操作符:</p>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th>运算符</th>
- <th>用法</th>
- <th>描述</th>
- </tr>
- <tr>
- <td><a href="#Bitwise_AND">按位与( AND)</a></td>
- <td style="white-space: nowrap;"><code>a &amp; b</code></td>
- <td>对于每一个比特位,只有两个操作数相应的比特位都是1时,结果才为1,否则为0。</td>
- </tr>
- <tr>
- <td><a href="#Bitwise_OR">按位或(OR)</a></td>
- <td style="white-space: nowrap;"><code>a | b</code></td>
- <td>对于每一个比特位,当两个操作数相应的比特位至少有一个1时,结果为1,否则为0。</td>
- </tr>
- <tr>
- <td><a href="#Bitwise_XOR">按位异或(XOR)</a></td>
- <td style="white-space: nowrap;"><code>a ^ b</code></td>
- <td>对于每一个比特位,当两个操作数相应的比特位有且只有一个1时,结果为1,否则为0。</td>
- </tr>
- <tr>
- <td><a href="#Bitwise_NOT">按位非(NOT)</a></td>
- <td style="white-space: nowrap;"><code>~ a</code></td>
- <td>反转操作数的比特位,即0变成1,1变成0。</td>
- </tr>
- <tr>
- <td><a href="#Left_shift">左移(L</a><a href="#Left_shift" style="line-height: 1.5;">eft shift)</a></td>
- <td style="white-space: nowrap;"><code>a &lt;&lt; b</code></td>
- <td>将 <code>a</code> 的二进制形式向左移 <code>b</code> (&lt; 32) 比特位,右边用0填充。</td>
- </tr>
- <tr>
- <td><a href="#Right_shift">有符号右移</a></td>
- <td style="white-space: nowrap;"><code>a &gt;&gt; b</code></td>
- <td>将 a 的二进制表示向右移<code> b </code>(&lt; 32) 位,丢弃被移出的位。</td>
- </tr>
- <tr>
- <td><a href="#Unsigned_right_shift">无符号右移</a></td>
- <td style="white-space: nowrap;"><code>a &gt;&gt;&gt; b</code></td>
- <td>将 a 的二进制表示向右移<code> b </code>(&lt; 32) 位,丢弃被移出的位,并使用 0 在左侧填充。</td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="有符号32位整数">有符号32位整数</h2>
-
-<p>所有的按位操作符的操作数都会被转成补码(two's complement)形式的有符号32位整数。补码形式是指一个数的负对应值(negative counterpart)(如 5和-5)为数值的所有比特位反转后,再加1。反转比特位即该数值进行’非‘位运算,也即该数值的反码。例如下面为整数314的二进制编码:</p>
-
-<pre>00000000000000000000000100111010
-</pre>
-
-<p>下面编码 <code>~314</code>,即 <code>314</code> 的反码:</p>
-
-<pre>11111111111111111111111011000101
-</pre>
-
-<p>最后,下面编码 <code>-314</code>,即 <code>314</code> 的反码再加1:</p>
-
-<pre>11111111111111111111111011000110
-</pre>
-
-<p>补码保证了当一个数是正数时,其最左的比特位是0,当一个数是负数时,其最左的比特位是1。因此,最左边的比特位被称为符号位(<em>sign bit</em>)。</p>
-
-<p><code>0</code> 是所有比特数字0组成的整数。</p>
-
-<pre>0 (base 10) = 00000000000000000000000000000000 (base 2)
-</pre>
-
-<p><code>-1</code> 是所有比特数字1组成的整数。</p>
-
-<pre>-1 (base 10) = 11111111111111111111111111111111 (base 2)
-</pre>
-
-<p><code>-2147483648</code>(十六进制形式:<code>-0x80000000</code>)是除了最左边为1外,其他比特位都为0的整数。</p>
-
-<pre>-2147483648 (base 10) = 10000000000000000000000000000000 (base 2)
-</pre>
-
-<p><code>2147483647</code>(十六进制形式:<code>0x7fffffff</code>)是除了最左边为0外,其他比特位都为1的整数。</p>
-
-<pre>2147483647 (base 10) = 01111111111111111111111111111111 (base 2)
-</pre>
-
-<p>数字<code>-2147483648</code> 和 <code>2147483647</code> 是32位有符号数字所能表示的最小和最大整数。</p>
-
-<h2 id="按位逻辑操作符">按位逻辑操作符</h2>
-
-<p>从概念上讲,按位逻辑操作符按遵守下面规则:</p>
-
-<ul>
- <li>操作数被转换成32位整数,用比特序列(0和1组成)表示。超过32位的数字会被丢弃。<br>
- 例如, 以下具有32位以上的整数将转换为32位整数:</li>
- <li>
- <pre>转换前: 11100110111110100000000000000110000000000001
-转换后: 10100000000000000110000000000001</pre>
- </li>
- <li>第一个操作数的每个比特位与第二个操作数的相应比特位匹配:第一位对应第一位,第二位对应第二位,以此类推。</li>
- <li>位运算符应用到每对比特位,结果是新的比特值。</li>
-</ul>
-
-<h3 id="(按位与)"><a name="Bitwise_AND">&amp; (按位与)</a></h3>
-
-<p>对每对比特位执行<strong>与(AND)操作</strong>。只有 a 和 b 都是 1 时,a AND b 才是 1。<strong>与操作</strong>的真值表如下:</p>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <td class="header">a</td>
- <td class="header">b</td>
- <td class="header">a AND b</td>
- </tr>
- <tr>
- <td>0</td>
- <td>0</td>
- <td>0</td>
- </tr>
- <tr>
- <td>0</td>
- <td>1</td>
- <td>0</td>
- </tr>
- <tr>
- <td>1</td>
- <td>0</td>
- <td>0</td>
- </tr>
- <tr>
- <td>1</td>
- <td>1</td>
- <td>1</td>
- </tr>
- </tbody>
-</table>
-
-<pre> 9 (base 10) = 00000000000000000000000000001001 (base 2)
- 14 (base 10) = 00000000000000000000000000001110 (base 2)
- --------------------------------
-14 &amp; 9 (base 10) = 00000000000000000000000000001000 (base 2) = 8 (base 10)
-</pre>
-
-<p>将任一数值 x 与 0 执行按位与操作,其结果都为 0。将任一数值 x 与 -1 执行按位与操作,其结果都为 x。</p>
-
-<h3 id="(按位或)"><a name="Bitwise_OR">| (按位或)</a></h3>
-
-<p>对每一对比特位执行<strong>或(OR)操作</strong>。如果 a 或 b 为 1,则 <code>a</code> OR <code>b</code> 结果为 1。<strong>或操作</strong>的真值表:</p>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <td class="header">a</td>
- <td class="header">b</td>
- <td class="header">a OR b</td>
- </tr>
- <tr>
- <td>0</td>
- <td>0</td>
- <td>0</td>
- </tr>
- <tr>
- <td>0</td>
- <td>1</td>
- <td>1</td>
- </tr>
- <tr>
- <td>1</td>
- <td>0</td>
- <td>1</td>
- </tr>
- <tr>
- <td>1</td>
- <td>1</td>
- <td>1</td>
- </tr>
- </tbody>
-</table>
-
-<pre> 9 (base 10) = 00000000000000000000000000001001 (base 2)
- 14 (base 10) = 00000000000000000000000000001110 (base 2)
- --------------------------------
-14 | 9 (base 10) = 00000000000000000000000000001111 (base 2) = 15 (base 10)
-</pre>
-
-<p>将任一数值 x 与 0 进行按位或操作,其结果都是 x。将任一数值 x 与 -1 进行按位或操作,其结果都为 -1。</p>
-
-<p>补充一些例子:</p>
-
-<pre class="brush: js">1 | 0 ; // 1
-
-1.1 | 0 ; // 1
-
-'asfdasfda' | 0 ;       // 0
-
-0 | 0 ; // 0
-
-(-1) | 0 ; // -1
-
-(-1.5646) | 0 ;      // -1
-
-[] | 0 ; // 0
-
-({}) | 0 ; // 0
-
-"123456" | 0 ; // 123456
-
-1.23E2 | 0; // 123
-
-1.23E12 | 0; // 1639353344
-
--1.23E2 | 0; // -123
-
--1.23E12 | 0; // -1639353344</pre>
-
-<h3 id="(按位异或)"><a name="Bitwise_XOR">^ (按位异或)</a></h3>
-
-<p>对每一对比特位执行<strong>异或(XOR)操作</strong>。当 a 和 b 不相同时,<code>a</code> XOR <code>b</code> 的结果为 1。<strong>异或操作</strong>真值表:</p>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <td class="header">a</td>
- <td class="header">b</td>
- <td class="header">a XOR b</td>
- </tr>
- <tr>
- <td>0</td>
- <td>0</td>
- <td>0</td>
- </tr>
- <tr>
- <td>0</td>
- <td>1</td>
- <td>1</td>
- </tr>
- <tr>
- <td>1</td>
- <td>0</td>
- <td>1</td>
- </tr>
- <tr>
- <td>1</td>
- <td>1</td>
- <td>0</td>
- </tr>
- </tbody>
-</table>
-
-<pre> 9 (base 10) = 00000000000000000000000000001001 (base 2)
- 14 (base 10) = 00000000000000000000000000001110 (base 2)
- --------------------------------
-14 ^ 9 (base 10) = 00000000000000000000000000000111 (base 2) = 7 (base 10)
-</pre>
-
-<p>将任一数值 x 与 0 进行异或操作,其结果为 x。将任一数值 x 与 -1 进行异或操作,其结果为 ~x。</p>
-
-<h3 id="(按位非)"><a name="Bitwise_NOT">~ (按位非)</a></h3>
-
-<p>对每一个比特位执行<strong>非(NOT)操作</strong>。NOT <code>a</code> 结果为 a 的反转(即反码)。<strong>非操作</strong>的真值表:</p>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <td class="header">a</td>
- <td class="header">NOT a</td>
- </tr>
- <tr>
- <td>0</td>
- <td>1</td>
- </tr>
- <tr>
- <td>1</td>
- <td>0</td>
- </tr>
- </tbody>
-</table>
-
-<pre> 9 (base 10) = 00000000000000000000000000001001 (base 2)
- --------------------------------
-~9 (base 10) = 11111111111111111111111111110110 (base 2) = -10 (base 10)
-</pre>
-
-<p>对任一数值 x 进行按位非操作的结果为 -(x + 1)。例如,~5 结果为 -6。</p>
-
-<p>与 indexOf 一起使用示例:</p>
-
-<pre class="brush: js">var str = 'rawr';
-var searchFor = 'a';
-
-// 这是 if (-1*str.indexOf('a') &lt;= 0) 条件判断的另一种方法
-if (~str.indexOf(searchFor)) {
- // searchFor 包含在字符串中
-} else {
- // searchFor 不包含在字符串中
-}
-
-// (~str.indexOf(searchFor))的返回值
-// r == -1
-// a == -2
-// w == -3
-</pre>
-
-<h2 id="按位移动操作符">按位移动操作符</h2>
-
-<p>按位移动操作符有两个操作数:第一个是要被移动的数字,而第二个是要移动的长度。移动的方向根据操作符的不同而不同。</p>
-
-<p>按位移动会先将操作数转换为大端字节序顺序(big-endian order)的32位整数,并返回与左操作数相同类型的结果。右操作数应小于 32位,否则只有最低 5 个字节会被使用。</p>
-
-<pre>注:Big-Endian:高位字节排放在内存的低地址端,低位字节排放在内存的高地址端,
-又称为"高位编址"。
-Big-Endian是最直观的字节序:
-①把内存地址从左到右按照由低到高的顺序写出;
-②把值按照通常的高位到低位的顺序写出;
-③两者对照,一个字节一个字节的填充进去。</pre>
-
-<h3 id="&lt;&lt;_(左移)"><a name="Left_shift">&lt;&lt; (左移)</a></h3>
-
-<p>该操作符会将第一个操作数向左移动指定的位数。向左被移出的位被丢弃,右侧用 0 补充。</p>
-
-<p>For example, <code>9 &lt;&lt; 2</code> yields 36:</p>
-
-<pre> 9 (base 10): 00000000000000000000000000001001 (base 2)
- --------------------------------
-9 &lt;&lt; 2 (base 10): 00000000000000000000000000100100 (base 2) = 36 (base 10)
-</pre>
-
-<p>在数字 <strong>x</strong> 上左移 <strong>y</strong> 比特得到 <strong>x * 2<sup>y</sup></strong>.</p>
-
-<h3 id=">>_(有符号右移)"><a name="Right_shift">&gt;&gt; (有符号右移)</a></h3>
-
-<p>该操作符会将第一个操作数向右移动指定的位数。向右被移出的位被丢弃,拷贝最左侧的位以填充左侧。由于新的最左侧的位总是和以前相同,符号位没有被改变。所以被称作“符号传播”。</p>
-
-<p>例如, <code>9 &gt;&gt; 2</code> 得到 2:</p>
-
-<pre> 9 (base 10): 00000000000000000000000000001001 (base 2)
- --------------------------------
-9 &gt;&gt; 2 (base 10): 00000000000000000000000000000010 (base 2) = 2 (base 10)
-</pre>
-
-<p>相比之下, <code>-9 &gt;&gt; 2</code> 得到 -3,因为符号被保留了。</p>
-
-<pre> -9 (base 10): 11111111111111111111111111110111 (base 2)
- --------------------------------
--9 &gt;&gt; 2 (base 10): 11111111111111111111111111111101 (base 2) = -3 (base 10)
-</pre>
-
-<h3 id=">>>_(无符号右移)"><a name="Unsigned_right_shift">&gt;&gt;&gt; (无符号右移)</a></h3>
-
-<p>该操作符会将第一个操作数向右移动指定的位数。向右被移出的位被丢弃,左侧用0填充。因为符号位变成了 0,所以结果总是非负的。(译注:即便右移 0 个比特,结果也是非负的。)</p>
-
-<p>对于非负数,有符号右移和无符号右移总是返回相同的结果。例如 <code>9 &gt;&gt;&gt; 2</code> 和 <code>9 &gt;&gt; 2</code> 一样返回 2:</p>
-
-<pre> 9 (base 10): 00000000000000000000000000001001 (base 2)
- --------------------------------
-9 &gt;&gt;&gt; 2 (base 10): 00000000000000000000000000000010 (base 2) = 2 (base 10)
-</pre>
-
-<p>但是对于负数却不尽相同。 <code>-9 &gt;&gt;&gt; 2</code> 产生 1073741821 这和 <code>-9 &gt;&gt; 2</code> 不同:</p>
-
-<pre> -9 (base 10): 11111111111111111111111111110111 (base 2)
- --------------------------------
--9 &gt;&gt;&gt; 2 (base 10): 00111111111111111111111111111101 (base 2) = 1073741821 (base 10)
-</pre>
-
-<h2 id="示例">示例</h2>
-
-<h3 id="例子:标志位与掩码">例子:标志位与掩码</h3>
-
-<p>位运算经常被用来创建、处理以及读取标志位序列——一种类似二进制的变量。虽然可以使用变量代替标志位序列,但是这样可以节省内存(1/32)。</p>
-
-<p>例如,有 4 个标志位:</p>
-
-<ul>
- <li>标志位 A:我们有 ant</li>
- <li>标志位 B:我们有 bat</li>
- <li>标志位 C:我们有 cat</li>
- <li>标志位 D:我们有 duck</li>
-</ul>
-
-<p>标志位通过位序列 DCBA 来表示。当一个位被置位 (set) 时,它的值为 1 。当被清除 (clear) 时,它的值为 0 。例如一个变量 <code>flags</code> 的二进制值为 0101:</p>
-
-<pre class="brush: js">var flags = 5; // 二进制 0101
-</pre>
-
-<p>这个值表示:</p>
-
-<ul>
- <li>标志位 A 是 true (我们有 ant);</li>
- <li>标志位 B 是 false (我们没有 bat);</li>
- <li>标志位 C 是 true (我们有 cat);</li>
- <li>标志位 D 是 false (我们没有 duck);</li>
-</ul>
-
-<p>因为位运算是 32 位的, 0101 实际上是 00000000000000000000000000000101。因为前面多余的 0 没有任何意义,所以他们可以被忽略。</p>
-
-<p>掩码 (bitmask) 是一个通过与/或来读取标志位的位序列。典型的定义每个标志位的原语掩码如下:</p>
-
-<pre class="brush: js">var FLAG_A = 1; // 0001
-var FLAG_B = 2; // 0010
-var FLAG_C = 4; // 0100
-var FLAG_D = 8; // 1000
-</pre>
-
-<p>新的掩码可以在以上掩码上使用逻辑运算创建。例如,掩码 1011 可以通过 FLAG_A、FLAG_B 和 FLAG_D 逻辑或得到:</p>
-
-<pre class="brush: js">var mask = FLAG_A | FLAG_B | FLAG_D; // 0001 | 0010 | 1000 =&gt; 1011
-</pre>
-
-<p>某个特定的位可以通过与掩码做逻辑与运算得到,通过与掩码的与运算可以去掉无关的位,得到特定的位。例如,掩码 0100 可以用来检查标志位 C 是否被置位:</p>
-
-<pre class="brush: js">// 如果我们有 cat
-if (flags &amp; FLAG_C) { // 0101 &amp; 0100 =&gt; 0100 =&gt; true
- // do stuff
-}
-</pre>
-
-<p>一个有多个位被置位的掩码表达任一/或者的含义。例如,以下两个表达是等价的:</p>
-
-<pre class="brush: js">// 如果我们有 bat 或者 cat 至少一个
-// (0101 &amp; 0010) || (0101 &amp; 0100) =&gt; 0000 || 0100 =&gt; true
-if ((flags &amp; FLAG_B) || (flags &amp; FLAG_C)) {
- // do stuff
-}
-</pre>
-
-<pre class="brush: js">// 如果我们有 bat 或者 cat 至少一个
-var mask = FLAG_B | FLAG_C; // 0010 | 0100 =&gt; 0110
-if (flags &amp; mask) { // 0101 &amp; 0110 =&gt; 0100 =&gt; true
- // do stuff
-}
-</pre>
-
-<p>可以通过与掩码做或运算设置标志位,掩码中为 1 的位可以设置对应的位。例如掩码 1100 可用来设置位 C 和 D:</p>
-
-<pre class="brush: js">// 我们有 cat 和 duck
-var mask = FLAG_C | FLAG_D; // 0100 | 1000 =&gt; 1100
-flags |= mask; // 0101 | 1100 =&gt; 1101
-</pre>
-
-<p>可以通过与掩码做与运算清除标志位,掩码中为 0 的位可以设置对应的位。掩码可以通过对原语掩码做非运算得到。例如,掩码 1010 可以用来清除标志位 A 和 C :</p>
-
-<pre class="brush: js">// 我们没有 ant 也没有 cat
-var mask = ~(FLAG_A | FLAG_C); // ~0101 =&gt; 1010
-flags &amp;= mask; // 1101 &amp; 1010 =&gt; 1000
-</pre>
-
-<p>如上的掩码同样可以通过 <code>~FLAG_A &amp; ~FLAG_C</code> 得到(德摩根定律):</p>
-
-<pre class="brush: js">// 我们没有 ant 也没有 cat
-var mask = ~FLAG_A &amp; ~FLAG_C;
-flags &amp;= mask; // 1101 &amp; 1010 =&gt; 1000
-</pre>
-
-<p>标志位可以使用异或运算切换。所有值为 1 的位可以切换对应的位。例如,掩码 0110 可以用来切换标志位 B 和 C:</p>
-
-<pre class="brush: js">// 如果我们以前没有 bat ,那么我们现在有 bat
-// 但是如果我们已经有了一个,那么现在没有了
-// 对 cat 也是相同的情况
-var mask = FLAG_B | FLAG_C;
-flags = flags ^ mask; // 1100 ^ 0110 =&gt; 1010
-</pre>
-
-<p>最后,所有标志位可以通过非运算翻转:</p>
-
-<pre class="brush: js">// entering parallel universe...
-flags = ~flags; // ~1010 =&gt; 0101
-</pre>
-
-<h3 id="转换片段">转换片段</h3>
-
-<p>将一个二进制数的 <code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String" title="/en-US/docs/JavaScript/Reference/Global_Objects/String">String</a></code> 转换为十进制的 <code><a href="/zh-CN/docs/JavaScript/Reference/Global_Objects/Number" title="/en-US/docs/JavaScript/Reference/Global_Objects/Number">Number</a></code>:</p>
-
-<pre class="brush: js">var sBinString = "1011";
-var nMyNumber = parseInt(sBinString, 2);
-alert(nMyNumber); // 打印 11
-</pre>
-
-<p>将一个十进制的 <code><a href="/zh-CN/docs/JavaScript/Reference/Global_Objects/Number" title="/en-US/docs/JavaScript/Reference/Global_Objects/Number">Number</a></code> 转换为二进制数的 <code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String" title="/en-US/docs/JavaScript/Reference/Global_Objects/String">String</a></code>:</p>
-
-<pre class="brush: js">var nMyNumber = 11;
-var sBinString = nMyNumber.toString(2);
-alert(sBinString); // 打印 1011
-</pre>
-
-<h3 id="自动化掩码创建">自动化掩码创建</h3>
-
-<p>如果你需要从一系列的 <code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean" title="/en-US/docs/JavaScript/Reference/Global_Objects/Boolean">Boolean</a></code> 值创建一个掩码,你可以:</p>
-
-<pre class="brush: js">function createMask () {
- var nMask = 0, nFlag = 0, nLen = arguments.length &gt; 32 ? 32 : arguments.length;
- for (nFlag; nFlag &lt; nLen; nMask |= arguments[nFlag] &lt;&lt; nFlag++);
- return nMask;
-}
-var mask1 = createMask(true, true, false, true); // 11, i.e.: 1011
-var mask2 = createMask(false, false, true); // 4, i.e.: 0100
-var mask3 = createMask(true); // 1, i.e.: 0001
-// etc.
-
-alert(mask1); // 打印 11
-</pre>
-
-<h3 id="逆算法:从掩码得到布尔数组">逆算法:从掩码得到布尔数组</h3>
-
-<p>如果你希望从掩码得到得到 <code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean" title="/en-US/docs/JavaScript/Reference/Global_Objects/Boolean">Boolean</a></code> <code><a href="/zh-CN/docs/Mozilla/Tech/XPCOM/Array" title="/en-US/docs/JavaScript/Reference/Global_Objects/Array">Array</a></code> :</p>
-
-<pre class="brush: js">function arrayFromMask (nMask) {
- // nMask 必须介于 -2147483648 和 2147483647 之间
- if (nMask &gt; 0x7fffffff || nMask &lt; -0x80000000) {
- throw new TypeError("arrayFromMask - out of range");
- }
- for (var nShifted = nMask, aFromMask = []; nShifted;
- aFromMask.push(Boolean(nShifted &amp; 1)), nShifted &gt;&gt;&gt;= 1);
- return aFromMask;
-}
-
-var array1 = arrayFromMask(11);
-var array2 = arrayFromMask(4);
-var array3 = arrayFromMask(1);
-
-alert("[" + array1.join(", ") + "]");
-// 打印 "[true, true, false, true]", i.e.: 11, i.e.: 1011
-</pre>
-
-<p>你可以同时测试以上两个算法……</p>
-
-<pre class="brush: js">var nTest = 19; // our custom mask
-var nResult = createMask.apply(this, arrayFromMask(nTest));
-
-alert(nResult); // 19
-</pre>
-
-<p>仅仅由于教学目的 (因为有 <code><a href="/zh-CN/docs/JavaScript/Reference/Global_Objects/Number" title="/en-US/docs/JavaScript/Reference/Global_Objects/Number/toString">Number.toString(2)</a></code> 方法),我们展示如何修改 arrayFromMask 算法通过 Number 返回二进制的 String,而非 Boolean Array:</p>
-
-<pre class="brush: js">function createBinaryString (nMask) {
- // nMask must be between -2147483648 and 2147483647
- for (var nFlag = 0, nShifted = nMask, sMask = ""; nFlag &lt; 32;
- nFlag++, sMask += String(nShifted &gt;&gt;&gt; 31), nShifted &lt;&lt;= 1);
- return sMask;
-}
-
-var string1 = createBinaryString(11);
-var string2 = createBinaryString(4);
-var string3 = createBinaryString(1);
-
-alert(string1);
-// 打印 00000000000000000000000000001011, i.e. 11
-</pre>
-
-<h2 id="规范">规范</h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">Specification</th>
- <th scope="col">Status</th>
- <th scope="col">Comment</th>
- </tr>
- <tr>
- <td>ECMAScript 1st Edition.</td>
- <td>Standard</td>
- <td>Initial definition.</td>
- </tr>
- <tr>
- <td>{{SpecName('ES5.1', '#sec-11.4.8', 'Bitwise NOT operator')}}<br>
- {{SpecName('ES5.1', '#sec-11.7', 'Bitwise shift operators')}}<br>
- {{SpecName('ES5.1', '#sec-11.10', 'Binary bitwise operators')}}</td>
- <td>{{Spec2('ES5.1')}}</td>
- <td></td>
- </tr>
- <tr>
- <td>{{SpecName('ES6', '#sec-bitwise-not-operator', 'Bitwise NOT operator')}}<br>
- {{SpecName('ES6', '#sec-bitwise-shift-operators', 'Bitwise shift operators')}}<br>
- {{SpecName('ES6', '#sec-binary-bitwise-operators', 'Binary bitwise operators')}}</td>
- <td>{{Spec2('ES6')}}</td>
- <td></td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="浏览器兼容性">浏览器兼容性</h2>
-
-<p>{{ CompatibilityTable() }}</p>
-
-<div id="compat-desktop">
-<table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Chrome</th>
- <th>Firefox (Gecko)</th>
- <th>Internet Explorer</th>
- <th>Opera</th>
- <th>Safari</th>
- </tr>
- <tr>
- <td><a href="#Bitwise_NOT">Bitwise NOT (<code>~</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- <tr>
- <td><a href="#Bitwise_AND">Bitwise AND (<code>&amp;</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- <tr>
- <td><a href="#Bitwise_OR">Bitwise OR (<code>|</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- <tr>
- <td><a href="#Bitwise_XOR">Bitwise XOR (<code>^</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- <tr>
- <td><a href="#Left_shift">Left shift (<code>&lt;&lt;</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- <tr>
- <td><a href="#Right_shift">Right shift (<code>&gt;&gt;</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- <tr>
- <td><a href="#Unsigned_right_shift">Unsigned right shift (<code>&gt;&gt;&gt;</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- </tbody>
-</table>
-</div>
-
-<div id="compat-mobile">
-<table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Android</th>
- <th>Chrome for Android</th>
- <th>Firefox Mobile (Gecko)</th>
- <th>IE Mobile</th>
- <th>Opera Mobile</th>
- <th>Safari Mobile</th>
- </tr>
- <tr>
- <td><a href="#Bitwise_NOT">Bitwise NOT (<code>~</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- <tr>
- <td><a href="#Bitwise_AND">Bitwise AND (<code>&amp;</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- <tr>
- <td><a href="#Bitwise_OR">Bitwise OR (<code>|</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- <tr>
- <td><a href="#Bitwise_XOR">Bitwise XOR (<code>^</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- <tr>
- <td><a href="#Left_shift">Left shift (<code>&lt;&lt;</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- <tr>
- <td><a href="#Right_shift">Right shift (<code>&gt;&gt;</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- <tr>
- <td><a href="#Unsigned_right_shift">Unsigned right shift (<code>&gt;&gt;&gt;</code>)</a></td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- <td>{{ CompatVersionUnknown() }}</td>
- </tr>
- </tbody>
-</table>
-</div>
-
-<h2 id="See_also" name="See_also">相关链接</h2>
-
-<ul>
- <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators">Logical operators</a></li>
- <li>
- <p><strong>js ^</strong> &amp; <strong>Bitwise Operators</strong></p>
- </li>
-</ul>
diff --git a/files/zh-cn/web/javascript/reference/operators/comparison_operators/index.html b/files/zh-cn/web/javascript/reference/operators/comparison_operators/index.html
deleted file mode 100644
index 5ddf85f426..0000000000
--- a/files/zh-cn/web/javascript/reference/operators/comparison_operators/index.html
+++ /dev/null
@@ -1,278 +0,0 @@
----
-title: 比较操作符
-slug: Web/JavaScript/Reference/Operators/Comparison_Operators
-tags:
- - 严格比较操作符
- - 比较操作符
-translation_of: Web/JavaScript/Reference/Operators
-translation_of_original: Web/JavaScript/Reference/Operators/Comparison_Operators
----
-<div>{{jsSidebar("Operators")}}</div>
-
-<p>JavaScript 有两种比较方式:严格比较运算符和转换类型比较运算符。对于严格比较运算符(===)来说,仅当两个操作数的类型相同且值相等为 true,而对于被广泛使用的比较运算符(==)来说,会在进行比较之前,将两个操作数转换成相同的类型。对于关系运算符(比如 &lt;=)来说,会先将操作数转为原始值,使它们类型相同,再进行比较运算。</p>
-
-<p>字符串比较则是使用基于标准字典的 Unicode 值来进行比较的。</p>
-
-<p>比较的特点:</p>
-
-<ul>
- <li>对于两个拥有相同字符顺序,相同长度,并且每个字符的位置都匹配的字符串,应该使用严格比较运算符。</li>
- <li><span style="line-height: 1.5;"> 对于两个数值相同的数字应该使用严格比较运算符,NaN和任何值不相等,包括其自身,正数零等于负数零。</span></li>
- <li>对于两个同为true或同为false的布尔操作数,应使用严格比较运算符。</li>
- <li>不要使用严格比较运算符或比较运算符来比较两个不相等的对象。</li>
- <li>当比较一个表达式和一个对象时,仅当两个操作数引用相同的对象(指针指向相同对象)。</li>
- <li>对于Null 和 Undefined 类型而言,应使用严格比较运算符比较其自身,使用比较运算符进行互相比较。</li>
-</ul>
-
-<h2 id="相等运算符">相等运算符</h2>
-
-<h3 id="相等()">相等(==)</h3>
-
-<p>比较操作符会为两个不同类型的操作数转换类型,然后进行严格比较。当两个操作数都是对象时,JavaScript会比较其内部引用,当且仅当他们的引用指向内存中的相同对象(区域)时才相等,即他们在栈内存中的引用地址相同。</p>
-
-<h4 id="语法">语法</h4>
-
-<pre class="syntaxbox">x == y
-</pre>
-
-<h4 id="例子">例子</h4>
-
-<pre class="brush: js"> 1 == 1 // true
-"1" == 1 // true
- 1 == '1' // true
- 0 == false // true
-</pre>
-
-<h3 id="不相等_(!)"><a name="Inequality">不相等 (!=)</a></h3>
-
-<p>不等操作符仅当操作数不相等时返回true,如果两操作数不是同一类型,JavaScript会尝试将其转为一个合适的类型,然后进行比较。如果两操作数为对象类型,JavaScript会比较其内部引用地址,仅当他们在内存中引用不同对象时不相等。</p>
-
-<h4 id="语法_2">语法</h4>
-
-<pre class="syntaxbox">x != y</pre>
-
-<h4 id="例子_2">例子</h4>
-
-<pre class="brush: js">1 != 2 // true
-1 != "1" // false
-1 != '1' // false
-1 != true // false
-0 != false // false
-</pre>
-
-<h3 id="一致严格相等_()"><a name="Identity">一致/严格相等 (===)</a></h3>
-
-<p>一致运算符不会进行类型转换,仅当操作数严格相等时返回true</p>
-
-<h4 id="语法_3">语法</h4>
-
-<pre class="syntaxbox">x === y</pre>
-
-<h4 id="例子_3">例子</h4>
-
-<pre class="brush: js ">3 === 3 // true
-3 === '3' // false
-var object1 = {"value":"key"}, object2={"value":"key"};
-object1 === object2 //false</pre>
-
-<h3 id="不一致严格不相等_(!)"><a name="Nonidentity">不一致/严格不相等 (!==)</a></h3>
-
-<p>不一致运算符当操作数不相等或不同类型时返回true</p>
-
-<h4 id="语法_4">语法</h4>
-
-<pre class="syntaxbox">x !== y</pre>
-
-<h4 id="例子_4">例子</h4>
-
-<pre class="brush: js">3 !== '3' // true
-4 !== 3 // true
-</pre>
-
-<h2 id="关系运算符">关系运算符</h2>
-
-<h3 id="大于运算符_(>)"><a name="Greater_than_operator">大于运算符 (&gt;)</a></h3>
-
-<p>大于运算符仅当左操作数大于右操作数时返回true</p>
-
-<h4 id="语法_5">语法</h4>
-
-<pre class="syntaxbox">x &gt; y</pre>
-
-<h4 id="例子_5">例子</h4>
-
-<pre class="brush: js">4 &gt; 3 // true
-</pre>
-
-<h3 id="大于等于运算符_(>)"><a name="Greater_than_or_equal_operator">大于等于运算符 (&gt;=)</a></h3>
-
-<p>大于等于运算符当左操作数大于或等于右操作数时返回true</p>
-
-<h4 id="语法_6">语法</h4>
-
-<pre class="syntaxbox"> x &gt;= y</pre>
-
-<h4 id="例子_6">例子</h4>
-
-<pre class="brush: js">4 &gt;= 3 // true
-3 &gt;= 3 // true
-</pre>
-
-<h3 id="小于运算符_(&lt;)"><a name="Less_than_operator">小于运算符 (&lt;)</a></h3>
-
-<p>小于运算符仅当左操作数小于右操作数时返回true</p>
-
-<h4 id="语法_7">语法</h4>
-
-<pre class="syntaxbox"> x &lt; y</pre>
-
-<h4 id="例子_7">例子</h4>
-
-<pre class="brush: js">3 &lt; 4 // true
-</pre>
-
-<h3 id="小于等于运算符_(&lt;)"><a id="Less_than_or_equal_operator" name="Less_than_or_equal_operator">小于等于运算符 (&lt;=)</a></h3>
-
-<p>小于等于运算符当左操作数小于或等于右操作数时返回true</p>
-
-<h4 id="语法_8">语法</h4>
-
-<pre class="syntaxbox"> x &lt;= y</pre>
-
-<h4 id="例子_8">例子</h4>
-
-<pre class="brush: js">3 &lt;= 4 // true
-</pre>
-
-<h2 id="使用比较操作符">使用比较操作符</h2>
-
-<p>标准相等操作符(<code>==</code> and <code>!=</code>) 使用 <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3">Abstract Equality Comparison Algorithm</a> 去比较两个操作数。当两个操作数类型不相等时,会在比较前尝试将其转换为相同类型。 e.g., 对于表达式 <code>5 == '5'</code>, 在比较前会先将右边字符串类型的操作数 5 转换为数字。</p>
-
-<p>严格相等操作符 (<code>===</code> and <code>!==</code>) 使用 Strict Equality Comparison Algorithm 并尝试对两个相同操作数进行相等比较,如果它们的类型不相等,那么永远会返回false 所以 <code>5 !== '5'。</code></p>
-
-<p>当需要明确操作数的类型和值的时候,或者操作数的确切类型非常重要时,应使用严格相等操作符。否则,当你允许操作数在比较前进行类型转换时,可以使用标准相等操作符来比较。</p>
-
-<p>当比较运算涉及类型转换时 (i.e., non–strict comparison), JavaScript 会按以下规则对字符串,数字,布尔或对象类型的操作数进行操作:</p>
-
-<ul>
- <li>当比较数字和字符串时,字符串会转换成数字值。 JavaScript 尝试将数字字面量转换为数字类型的值。 首先, 一个数学上的值会从数字字面量中衍生出来,然后这个值将被转为一个最接近的<code>Number</code>类型的值。</li>
- <li>如果其中一个操作数为布尔类型,那么布尔操作数如果为true,那么会转换为1,如果为false,会转换为整数0,即0。</li>
- <li>如果一个对象与数字或字符串相比较,JavaScript会尝试返回对象的默认值。操作符会尝试通过方法valueOf和toString将对象转换为其原始值(一个字符串或数字类型的值)。如果尝试转换失败,会产生一个运行时错误。</li>
- <li>注意:当且仅当与原始值比较时,对象会被转换为原始值。当两个操作数均为对象时,它们作为对象进行比较,仅当它们引用相同对象时返回true。</li>
-</ul>
-
-<div class="note"><strong>注意:</strong> 字符串对象的类型是对象,不是字符串!字符串对象很少被使用,所以下面的结果也许会让你惊讶:</div>
-
-<pre class="brush:js">// true as both operands are Type String (i.e. string primitives):
-'foo' === 'foo'
-
-var a = new String('foo');
-var b = new String('foo');
-
-// false as a and b are Type Object and reference different objects
-a == b
-
-// false as a and b are Type Object and reference different objects
-a === b
-
-// true as a and 'foo' are of different type and, the Object (a)
-// is converted to String 'foo' before comparison
-a == 'foo' </pre>
-
-<h2 id="Specifications">Specifications</h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">Specification</th>
- <th scope="col">Status</th>
- <th scope="col">Comment</th>
- </tr>
- <tr>
- <td>ECMAScript 1st Edition.</td>
- <td>Standard</td>
- <td>Initial definition. Implemented in JavaScript 1.0</td>
- </tr>
- <tr>
- <td>ECMAScript 3rd Edition.</td>
- <td>Standard</td>
- <td>Adds <code>===</code> and <code>!==</code> operators. Implemented in JavaScript 1.3</td>
- </tr>
- <tr>
- <td>{{SpecName('ES5.1', '#sec-11.8', 'Relational Operators')}}<br>
- {{SpecName('ES5.1', '#sec-11.9', 'Equality Operators')}}</td>
- <td>{{Spec2('ES5.1')}}</td>
- <td>Defined in several sections of the specification: <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.8">Relational Operators</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.9">Equality Operators</a></td>
- </tr>
- <tr>
- <td>{{SpecName('ES6', '#sec-relational-operators', 'Relational Operators')}}<br>
- {{SpecName('ES6', '#sec-equality-operators', 'Equality Operators')}}</td>
- <td>{{Spec2('ES6')}}</td>
- <td>Defined in several sections of the specification: <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-relational-operators">Relational Operators</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-equality-operators">Equality Operators</a></td>
- </tr>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-relational-operators')}}</td>
- <td>{{Spec2('ESDraft')}}</td>
- <td>Defined in several sections of the specification: <a href="http://tc39.github.io/ecma262/#sec-relational-operators">Relational Operators</a>, <a href="http://tc39.github.io/ecma262/#sec-equality-operators">Equality Operators</a></td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="Browser_compatibility">Browser compatibility</h2>
-
-<p>{{CompatibilityTable}}</p>
-
-<div id="compat-desktop">
-<table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Chrome</th>
- <th>Firefox (Gecko)</th>
- <th>Internet Explorer</th>
- <th>Opera</th>
- <th>Safari</th>
- </tr>
- <tr>
- <td>Basic support</td>
- <td>{{CompatVersionUnknown}}</td>
- <td>{{CompatVersionUnknown}}</td>
- <td>{{CompatVersionUnknown}}</td>
- <td>{{CompatVersionUnknown}}</td>
- <td>{{CompatVersionUnknown}}</td>
- </tr>
- </tbody>
-</table>
-</div>
-
-<div id="compat-mobile">
-<table class="compat-table">
- <tbody>
- <tr>
- <th>Feature</th>
- <th>Android</th>
- <th>Chrome for Android</th>
- <th>Firefox Mobile (Gecko)</th>
- <th>IE Mobile</th>
- <th>Opera Mobile</th>
- <th>Safari Mobile</th>
- </tr>
- <tr>
- <td>Basic support</td>
- <td>{{CompatVersionUnknown}}</td>
- <td>{{CompatVersionUnknown}}</td>
- <td>{{CompatVersionUnknown}}</td>
- <td>{{CompatVersionUnknown}}</td>
- <td>{{CompatVersionUnknown}}</td>
- <td>{{CompatVersionUnknown}}</td>
- </tr>
- </tbody>
-</table>
-</div>
-
-<h2 id="See_also">See also</h2>
-
-<ul>
- <li>{{jsxref("Object.is()")}}</li>
- <li><a href="/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness">Equality comparisons and sameness</a></li>
-</ul>
diff --git a/files/zh-cn/web/javascript/reference/operators/自减/index.html b/files/zh-cn/web/javascript/reference/operators/decrement/index.html
index f405740df3..f405740df3 100644
--- a/files/zh-cn/web/javascript/reference/operators/自减/index.html
+++ b/files/zh-cn/web/javascript/reference/operators/decrement/index.html
diff --git a/files/zh-cn/web/javascript/reference/operators/相等/index.html b/files/zh-cn/web/javascript/reference/operators/equality/index.html
index e100ec1d2d..e100ec1d2d 100644
--- a/files/zh-cn/web/javascript/reference/operators/相等/index.html
+++ b/files/zh-cn/web/javascript/reference/operators/equality/index.html
diff --git a/files/zh-cn/web/javascript/reference/operators/逻辑和/index.html b/files/zh-cn/web/javascript/reference/operators/logical_and/index.html
index de38317f42..de38317f42 100644
--- a/files/zh-cn/web/javascript/reference/operators/逻辑和/index.html
+++ b/files/zh-cn/web/javascript/reference/operators/logical_and/index.html
diff --git a/files/zh-cn/web/javascript/reference/operators/logical_operators/index.html b/files/zh-cn/web/javascript/reference/operators/logical_operators/index.html
deleted file mode 100644
index 5615e17d45..0000000000
--- a/files/zh-cn/web/javascript/reference/operators/logical_operators/index.html
+++ /dev/null
@@ -1,238 +0,0 @@
----
-title: 逻辑运算符
-slug: Web/JavaScript/Reference/Operators/Logical_Operators
-tags:
- - JavaScript
- - 操作符
- - 逻辑
-translation_of: Web/JavaScript/Reference/Operators
-translation_of_original: Web/JavaScript/Reference/Operators/Logical_Operators
----
-<div>{{jsSidebar("Operators")}}</div>
-
-<p>逻辑运算符通常用于{{jsxref("Boolean","布尔")}}型(逻辑)值。这种情况下,它们返回一个布尔值。然而,<code>&amp;&amp;</code> 和 <code>||</code> 运算符会返回一个指定操作数的值,因此,这些运算符也用于非布尔值。这时,它们也就会返回一个非布尔型值。</p>
-
-<div>{{EmbedInteractiveExample("pages/js/expressions-logicaloperator.html")}}</div>
-
-
-
-<h2 id="描述">描述</h2>
-
-<p>逻辑运算符如下表所示 (其中<code><em>expr</em></code>可能是任何一种<a href="https://developer.mozilla.org/zh-CN/docs/Glossary/Data_structure">类型</a>, 不一定是布尔值):</p>
-
-<table class="fullwidth-table syntaxbox">
- <tbody>
- <tr>
- <th>运算符</th>
- <th>语法</th>
- <th>说明</th>
- </tr>
- <tr>
- <td>逻辑与,AND(<code>&amp;&amp;</code>)</td>
- <td><code><em>expr1</em> &amp;&amp; <em>expr2</em></code></td>
- <td>若 <code>expr<strong>1</strong></code> 可转换为 <code>true</code>,则返回 <code>expr<strong>2</strong></code>;否则,返回 <code>expr<strong>1</strong></code>。</td>
- </tr>
- <tr>
- <td>逻辑或,OR(<code>||</code>)</td>
- <td><code><em>expr1</em> || <em>expr2</em></code></td>
- <td>若 <code>expr<strong>1</strong></code> 可转换为 <code>true</code>,则返回 <code>expr<strong>1</strong></code>;否则,返回 <code>expr<strong>2</strong></code>。</td>
- </tr>
- <tr>
- <td>逻辑非,NOT(<code>!</code>)</td>
- <td><code>!<em>expr</em></code></td>
- <td>若 <code>expr</code> 可转换为 <code>true</code>,则返回 <code>false</code>;否则,返回 <code>true</code>。</td>
- </tr>
- </tbody>
-</table>
-
-<p>如果一个值可以被转换为 <code>true</code>,那么这个值就是所谓的 {{Glossary("truthy")}},如果可以被转换为 <code>false</code>,那么这个值就是所谓的 {{Glossary("falsy")}}。</p>
-
-<p>会被转换为 <code>false</code> 的表达式有:</p>
-
-<ul>
- <li><code>null</code>;</li>
- <li><code>NaN</code>;</li>
- <li><code>0</code>;</li>
- <li>空字符串(<code>""</code> or <code>''</code> or <code>``</code>);</li>
- <li><code>undefined</code>。</li>
-</ul>
-
-<p>尽管 <code>&amp;&amp;</code> 和 <code>||</code> 运算符能够使用非布尔值的操作数, 但它们依然可以被看作是布尔操作符,因为它们的返回值总是能够被转换为布尔值。如果要显式地将它们的返回值(或者表达式)转换为布尔值,请使用<a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Logical_Operators#%E9%80%BB%E8%BE%91%E9%9D%9E%EF%BC%88!%EF%BC%89">双重非运算符</a>(即<code>!!</code>)或者<a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean">Boolean</a>构造函数。</p>
-
-<h3 id="短路计算">短路计算</h3>
-
-<p>由于逻辑表达式的运算顺序是从左到右,也可以用以下规则进行"短路"计算:</p>
-
-<ul>
- <li><code>(some falsy expression) &amp;&amp; (<em>expr)</em></code> 短路计算的结果为假。</li>
- <li><code>(some truthy expression) || <em>(expr)</em></code> 短路计算的结果为真。</li>
-</ul>
-
-<p>短路意味着上述表达式中的expr部分<strong>不会被执行</strong>,因此expr的任何副作用都不会生效(举个例子,如果expr是一次函数调用,这次调用就不会发生)。造成这种现象的原因是,整个表达式的值在第一个操作数被计算后已经确定了。看一个例子:</p>
-
-<pre class="brush: js">function A(){ console.log('called A'); return false; }
-function B(){ console.log('called B'); return true; }
-
-console.log( A() &amp;&amp; B() );
-// logs "called A" due to the function call,
-// then logs false (which is the resulting value of the operator)
-
-console.log( B() || A() );
-// logs "called B" due to the function call,
-// then logs true (which is the resulting value of the operator)
-</pre>
-
-<h3 id="Operators_precedence">Operators precedence</h3>
-
-<p>请注意,由于<a href="/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence">运算符优先级</a>的存在,下面的表达式的结果却不相同。右侧被小括号括起来的操作变成了独立的表达式。</p>
-
-<pre class="brush: js">false &amp;&amp; true || true // 结果为 true
-false &amp;&amp; (true || true) // 结果为 false
-</pre>
-
-<h3 id="逻辑与()">逻辑与(<code>&amp;&amp;</code>)</h3>
-
-<p>下面的代码是 &amp;&amp; (逻辑与) 运算符的示例.</p>
-
-<pre class="brush: js">a1 = true &amp;&amp; true // t &amp;&amp; t 返回 true
-a2 = true &amp;&amp; false // t &amp;&amp; f 返回 false
-a3 = false &amp;&amp; true // f &amp;&amp; t 返回 false
-a4 = false &amp;&amp; (3 == 4) // f &amp;&amp; f 返回 false
-a5 = "Cat" &amp;&amp; "Dog" // t &amp;&amp; t 返回 "Dog"
-a6 = false &amp;&amp; "Cat" // f &amp;&amp; t 返回 false
-a7 = "Cat" &amp;&amp; false // t &amp;&amp; f 返回 false
-a8 = '' &amp;&amp; false // f &amp;&amp; f 返回 ""
-a9 = false &amp;&amp; '' // f &amp;&amp; f 返回 false
-</pre>
-
-<h3 id="逻辑或()">逻辑或(<code>||</code>)</h3>
-
-<p>下面的代码是 || (逻辑或) 运算符的示例。</p>
-
-<pre class="brush: js">o1 = true || true // t || t 返回 true
-o2 = false || true // f || t 返回 true
-o3 = true || false // t || f 返回 true
-o4 = false || (3 == 4) // f || f 返回 false
-o5 = "Cat" || "Dog" // t || t 返回 "Cat"
-o6 = false || "Cat" // f || t 返回 "Cat"
-o7 = "Cat" || false // t || f 返回 "Cat"
-o8 = '' || false // f || f 返回 false
-o9 = false || '' // f || f 返回 ""
-</pre>
-
-<h3 id="逻辑非(!)">逻辑非(<code>!</code>)</h3>
-
-<p>下面的代码是 <code>!</code> (逻辑非) 运算符的示例.</p>
-
-<pre class="brush: js">n1 = !true // !t 返回 false
-n2 = !false // !f 返回 true
-n3 = !'' // !f 返回 true
-n4 = !'Cat' // !t 返回 false
-</pre>
-
-<h4 id="双重非(!!)运算符">双重非(<code>!!</code>)运算符</h4>
-
-<p>可能使用双重非运算符的一个场景,是显式地将任意值强制转换为其对应的<a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures#%E5%B8%83%E5%B0%94%E7%B1%BB%E5%9E%8B">布尔值</a>。这种转换是基于被转换值的 "truthyness" 和 "falsyness"的(参见 {{Glossary("truthy")}} 和 {{Glossary("falsy")}})。</p>
-
-<p>同样的转换可以通过 <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">Boolean</a> 函数完成。</p>
-
-<pre class="brush: js syntaxbox">n1 = !!true // !!truthy 返回 true
-n2 = !!{} // !!truthy 返回 true: <strong>任何</strong> 对象都是 truthy 的…
-n3 = !!(new Boolean(false)) // …甚至 <em>.valueOf()</em> 返回 false 的布尔值对象也是!
-n4 = !!false // !!falsy 返回 false
-n5 = !!"" // !!falsy 返回 false
-n6 = !!Boolean(false) // !!falsy 返回 false
-</pre>
-
-<h3 id="布尔值转换规则">布尔值转换规则</h3>
-
-<h4 id="将_AND_转换为_OR">将 AND 转换为 OR</h4>
-
-<p>以下涉及<strong>布尔</strong>运算的操作:</p>
-
-<pre class="brush: js">bCondition1 &amp;&amp; bCondition2</pre>
-
-<p>总是等于:</p>
-
-<pre class="brush: js">!(!bCondition1 || !bCondition2)</pre>
-
-<h4 id="将_OR_转换为_AND">将 OR 转换为 AND</h4>
-
-<p>以下涉及<strong>布尔</strong>运算的操作:</p>
-
-<pre class="brush: js">bCondition1 || bCondition2</pre>
-
-<p>总是等于:</p>
-
-<pre class="brush: js">!(!bCondition1 &amp;&amp; !bCondition2)</pre>
-
-<h3 id="删除嵌套的小括号">删除嵌套的小括号</h3>
-
-<p>由于逻辑表达式是从左往右计算的,所以,通常可以按照下面的规则删除小括号。</p>
-
-<h4 id="删除嵌套的_AND">删除嵌套的 AND</h4>
-
-<p>以下涉及<strong>布尔</strong>运算的操作:</p>
-
-<pre class="brush: js">bCondition1 || (bCondition2 &amp;&amp; bCondition3)</pre>
-
-<p>总是等于:</p>
-
-<pre class="brush: js">bCondition1 || bCondition2 &amp;&amp; bCondition3</pre>
-
-<h4 id="删除嵌套的_OR">删除嵌套的 OR</h4>
-
-<p>以下涉及<strong>布尔</strong>运算的操作:</p>
-
-<pre class="brush: js">bCondition1 &amp;&amp; (bCondition2 || bCondition3)</pre>
-
-<p>总是等于:</p>
-
-<pre class="brush: js">!(!bCondition1 || !bCondition2 &amp;&amp; !bCondition3)</pre>
-
-<h2 id="规范">规范</h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">规范</th>
- <th scope="col">状态</th>
- <th scope="col">备注</th>
- </tr>
- <tr>
- <td>{{SpecName('ES1')}}</td>
- <td>{{Spec2('ES1')}}</td>
- <td>Initial definition.</td>
- </tr>
- <tr>
- <td>{{SpecName('ES5.1', '#sec-11.11')}}</td>
- <td>{{Spec2('ES5.1')}}</td>
- <td>Defined in several sections of the specification: <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.9">Logical NOT Operator</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.11">Binary Logical Operators</a></td>
- </tr>
- <tr>
- <td>{{SpecName('ES6', '#sec-binary-logical-operators')}}</td>
- <td>{{Spec2('ES6')}}</td>
- <td>Defined in several sections of the specification: <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-logical-not-operator">Logical NOT Operator</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-binary-logical-operators">Binary Logical Operators</a></td>
- </tr>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-binary-logical-operators')}}</td>
- <td>{{Spec2('ESDraft')}}</td>
- <td>Defined in several sections of the specification: <a href="http://tc39.github.io/ecma262/#sec-logical-not-operator">Logical NOT Operator</a>, <a href="http://tc39.github.io/ecma262/#sec-binary-logical-operators">Binary Logical Operators</a></td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="浏览器兼容性">浏览器兼容性</h2>
-
-
-
-<p>{{Compat("javascript.operators.logical")}}</p>
-
-<h2 id="参见">参见</h2>
-
-<ul>
- <li><a href="/zh-CN/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators">按位操作符</a></li>
- <li><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean">布尔值</a></li>
- <li><a href="/zh-CN/docs/Glossary/Truthy">Truthy</a></li>
- <li><a href="/zh-CN/docs/Glossary/Falsy">Falsy</a></li>
-</ul>
diff --git a/files/zh-cn/web/javascript/reference/operators/可选链/index.html b/files/zh-cn/web/javascript/reference/operators/optional_chaining/index.html
index da2f04c775..da2f04c775 100644
--- a/files/zh-cn/web/javascript/reference/operators/可选链/index.html
+++ b/files/zh-cn/web/javascript/reference/operators/optional_chaining/index.html
diff --git a/files/zh-cn/web/javascript/reference/operators/管道操作符/index.html b/files/zh-cn/web/javascript/reference/operators/pipeline_operator/index.html
index 06ce40ad0b..06ce40ad0b 100644
--- a/files/zh-cn/web/javascript/reference/operators/管道操作符/index.html
+++ b/files/zh-cn/web/javascript/reference/operators/pipeline_operator/index.html
diff --git a/files/zh-cn/web/javascript/reference/operators/取余/index.html b/files/zh-cn/web/javascript/reference/operators/remainder/index.html
index 276296ccd7..276296ccd7 100644
--- a/files/zh-cn/web/javascript/reference/operators/取余/index.html
+++ b/files/zh-cn/web/javascript/reference/operators/remainder/index.html