Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AutoCorrect files/zh-cn/web/javascript/**/* #5878

Merged
merged 1 commit into from
May 29, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions files/zh-cn/web/javascript/about_javascript/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@

<h2 id="What_is_JavaScript.3F">什么是 JavaScript?</h2>

<p>JavaScript® (通常简写为JS)是一种轻量的、解释性的、面向对象的<a href="https://zh.wikipedia.org/wiki/%E5%A4%B4%E7%AD%89%E5%87%BD%E6%95%B0">头等函数</a>语言,其最广为人知的应用是作为网页的脚本语言,但同时它也在很多<a href="https://en.wikipedia.org/wiki/JavaScript#Uses_outside_web_pages">非浏览器环境下使用</a>。JS是一种动态的<a href="https://zh.wikipedia.org/wiki/%E5%8E%9F%E5%9E%8B%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88">基于原型</a>和多<a href="https://zh.wikipedia.org/wiki/%E7%BC%96%E7%A8%8B%E8%8C%83%E5%9E%8B">范式</a>的脚本语言,支持面向对象、命令式和函数式的编程风格。</p>
<p>JavaScript®(通常简写为 JS)是一种轻量的、解释性的、面向对象的<a href="https://zh.wikipedia.org/wiki/%E5%A4%B4%E7%AD%89%E5%87%BD%E6%95%B0">头等函数</a>语言,其最广为人知的应用是作为网页的脚本语言,但同时它也在很多<a href="https://en.wikipedia.org/wiki/JavaScript#Uses_outside_web_pages">非浏览器环境下使用</a>。JS 是一种动态的<a href="https://zh.wikipedia.org/wiki/%E5%8E%9F%E5%9E%8B%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88">基于原型</a>和多<a href="https://zh.wikipedia.org/wiki/%E7%BC%96%E7%A8%8B%E8%8C%83%E5%9E%8B">范式</a>的脚本语言,支持面向对象、命令式和函数式的编程风格。</p>

<p>JavaScript运行在网页的客户端,能被用来设计和编程网页在事件发生时的行为。JavaScript不仅易学而且强大,因此广泛用于对网页的控制。</p>
<p>JavaScript 运行在网页的客户端,能被用来设计和编程网页在事件发生时的行为。JavaScript 不仅易学而且强大,因此广泛用于对网页的控制。</p>

<p>与流行的误解相反,JavaScript 并不是“解释性 Java”。简单来说,JavaScript 是一个动态脚本语言,支持 <a href="/zh-CN/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Class-Based_vs._Prototype-Based_Languages" title="zh-CN/docs/JavaScript/Guide/Details_of_the_Object_Model#Class-Based_vs._Prototype-Based_Languages">基于原型的</a> 对象构造。其基本语法被设计地与 Java 和 C++ 接近,来减少学习语言所需要的新概念。语言结构,如条件语句(if)、循环(for,while)、分支(switch)、异常捕获(try...catch)等和这些语言一致或者很接近。</p>

Expand All @@ -22,11 +22,11 @@ <h2 id="What_is_JavaScript.3F">什么是 JavaScript?</h2>

<p>如果您需要了解更多 JavaScript 编程信息,请参见下方的 <a href="#JavaScript_resources">JavaScript 资源</a> 链接。</p>

<h2 id="What_JavaScript_implementations_are_available.3F">有哪些 JavaScript 的实现?</h2>
<h2 id="What_JavaScript_implementations_are_available.3F">有哪些 JavaScript 的实现</h2>

<p>mozilla.org 上托管了两个 JavaScript 实现。<strong>首个</strong> JavaScript 由网景公司的 Brendan Eich 创建,并不断地更新以符合 ECMA-262 Edition 5 及其之后的标准版本。这个引擎,代号 <a href="/zh-CN/docs/Mozilla/Projects/SpiderMonkey" title="zh-CN/docs/SpiderMonkey">SpiderMonkey</a> ,是由 C/C++ 语言开发的。而 <a href="/zh-CN/docs/Rhino" title="zh-CN/docs/Rhino">Rhino</a> 引擎,主要由 Norris Boyd(同样也是在网景公司)创建,则是一个 Java 语言开发的 JavaScript 实现。与 SpiderMonkey 类似,Rhino 符合 ECMA-262 Edition 5 标准。</p>

<p>有很多优化技术如 TraceMonkey (Firefox 3.5)、JägerMonkey (Firefox 4) 和 IonMonkey 被不断添加到了 SpiderMonkey JavaScript 引擎。并且提升JavaScript执行效率的工作一直在进行。</p>
<p>有很多优化技术如 TraceMonkey (Firefox 3.5)、JägerMonkey (Firefox 4) 和 IonMonkey 被不断添加到了 SpiderMonkey JavaScript 引擎。并且提升 JavaScript 执行效率的工作一直在进行。</p>

<p>除了以上实现,还有其他一些流行的 JavaScript 引擎,如:</p>

Expand All @@ -37,15 +37,15 @@ <h2 id="What_JavaScript_implementations_are_available.3F">有哪些 JavaScript
<li>The <a class="external" href="http://en.wikipedia.org/wiki/Chakra_%28JScript_engine%29" title="http://en.wikipedia.org/wiki/Chakra_%28JScript_engine%29">Chakra</a> 引擎,用在 Internet Explorer 中(尽管它实现的语言被正式地称作为“JScript”来避免商标问题)。</li>
</ul>

<p>每个 mozilla.org 的 JavaScript 引擎都提供了 公用API使程序开发者能将其JavaScript嵌入自己的软件中。目前最常见的 JavaScript 宿主环境是网页浏览器。浏览器一般通过 API 创建“宿主对象”来负责将<a class="external" href="http://www.w3.org/DOM/">DOM</a> 反射到 JavaScript 中。</p>
<p>每个 mozilla.org 的 JavaScript 引擎都提供了 公用 API 使程序开发者能将其 JavaScript 嵌入自己的软件中。目前最常见的 JavaScript 宿主环境是网页浏览器。浏览器一般通过 API 创建“宿主对象”来负责将<a class="external" href="http://www.w3.org/DOM/">DOM</a> 反射到 JavaScript 中。</p>

<p>另一个常见的 JavaScript 应用是作为服务端脚本语言。JavaScript 服务器提供宿主对象代表 HTTP 请求和响应,随后可以通过 JavaScript 程序来动态的生成 Web 页面。<a href="https://nodejs.org/en/">Node.js</a>便是一个流行的例子。</p>

<h2 id="JavaScript_resources">JavaScript 资源</h2>

<dl>
<dt><a href="/zh-CN/docs/Mozilla/Projects/SpiderMonkey" title="zh-CN/docs/SpiderMonkey">SpiderMonkey</a></dt>
<dd>Mozilla使用C/C++引擎实现JavaScript(又称为SpiderMonkey),以及如何在应用中嵌入使用的相关信息。</dd>
<dd>Mozilla 使用 C/C++ 引擎实现 JavaScript(又称为 SpiderMonkey),以及如何在应用中嵌入使用的相关信息。</dd>
<dt><a href="/zh-CN/docs/Rhino" title="zh-CN/docs/Rhino">Rhino</a></dt>
<dd>Rhino(Java 语言实现的 JavaScript)的相关信息。</dd>
<dt><a href="/zh-CN/docs/Web/JavaScript/Language_Resources" title="zh-CN/docs/JavaScript_Language_Resources">语言资源</a></dt>
Expand All @@ -54,4 +54,4 @@ <h2 id="JavaScript_resources">JavaScript 资源</h2>
<dd><a href="/zh-CN/docs/Web/JavaScript/Guide" title="zh-CN/docs/JavaScript/Guide">JavaScript 指南</a> 和 <a href="/zh-CN/docs/Web/JavaScript/Reference" title="zh-CN/docs/JavaScript/Reference">JavaScript 参考</a>。</dd>
</dl>

<p>JavaScript®是Oracle于美国和其他国家注册和拥有的商标。</p>
<p>JavaScript®是 Oracle 于美国和其他国家注册和拥有的商标。</p>
8 changes: 4 additions & 4 deletions files/zh-cn/web/javascript/closures/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ <h2 id="闭包"><strong>闭包</strong></h2>

<p>第一眼看上去,也许不能直观地看出这段代码能够正常运行。在一些编程语言中,一个函数中的局部变量仅存在于此函数的执行期间。一旦 <code>makeFunc()</code> 执行完毕,你可能会认为 <code>name</code> 变量将不能再被访问。然而,因为代码仍按预期运行,所以在 JavaScript 中情况显然与此不同。</p>

<p>原因在于,JavaScript中的函数会形成了闭包。 <em>闭包</em>是由函数以及声明该函数的词法环境组合而成的。该环境包含了这个闭包创建时作用域内的任何局部变量。在本例子中,<code>myFunc</code> 是执行 <code>makeFunc</code> 时创建的 <code>displayName</code> 函数实例的引用。<code>displayName</code> 的实例维持了一个对它的词法环境(变量 <code>name</code> 存在于其中)的引用。因此,当 <code>myFunc</code> 被调用时,变量 <code>name</code> 仍然可用,其值 <code>Mozilla</code> 就被传递到<code>alert</code>中。</p>
<p>原因在于,JavaScript 中的函数会形成了闭包。 <em>闭包</em>是由函数以及声明该函数的词法环境组合而成的。该环境包含了这个闭包创建时作用域内的任何局部变量。在本例子中,<code>myFunc</code> 是执行 <code>makeFunc</code> 时创建的 <code>displayName</code> 函数实例的引用。<code>displayName</code> 的实例维持了一个对它的词法环境(变量 <code>name</code> 存在于其中)的引用。因此,当 <code>myFunc</code> 被调用时,变量 <code>name</code> 仍然可用,其值 <code>Mozilla</code> 就被传递到<code>alert</code>中。</p>

<p>下面是一个更有意思的示例 — 一个 <code>makeAdder</code> 函数:</p>

Expand Down Expand Up @@ -245,7 +245,7 @@ <h2 id="Creating_closures_in_loops_A_common_mistake">在循环中创建闭包:

<p>运行这段代码后,您会发现它没有达到想要的效果。无论焦点在哪个<code>input</code>上,显示的都是关于年龄的信息。</p>

<p>原因是赋值给 <code>onfocus</code> 的是闭包。这些闭包是由他们的函数定义和在 <code>setupHelp</code> 作用域中捕获的环境所组成的。这三个闭包在循环中被创建,但他们共享了同一个词法作用域,在这个作用域中存在一个变量item。这是因为变量<code>item</code>使用var进行声明,由于变量提升,所以具有函数作用域。当<code>onfocus</code>的回调执行时,<code>item.help</code>的值被决定。由于循环在事件触发之前早已执行完毕,变量对象<code>item</code>(被三个闭包所共享)已经指向了<code>helpText</code>的最后一项。</p>
<p>原因是赋值给 <code>onfocus</code> 的是闭包。这些闭包是由他们的函数定义和在 <code>setupHelp</code> 作用域中捕获的环境所组成的。这三个闭包在循环中被创建,但他们共享了同一个词法作用域,在这个作用域中存在一个变量 item。这是因为变量<code>item</code>使用 var 进行声明,由于变量提升,所以具有函数作用域。当<code>onfocus</code>的回调执行时,<code>item.help</code>的值被决定。由于循环在事件触发之前早已执行完毕,变量对象<code>item</code>(被三个闭包所共享)已经指向了<code>helpText</code>的最后一项。</p>

<p>解决这个问题的一种方案是使用更多的闭包:特别是使用前面所述的函数工厂:</p>

Expand Down Expand Up @@ -298,13 +298,13 @@ <h2 id="Creating_closures_in_loops_A_common_mistake">在循环中创建闭包:
document.getElementById(item.id).onfocus = function() {
showHelp(item.help);
}
})(); // 马上把当前循环项的item与事件回调相关联起来
})(); // 马上把当前循环项的 item 与事件回调相关联起来
}
}

setupHelp();</pre>

<p>如果不想使用过多的闭包,你可以用ES2015引入的let关键词:</p>
<p>如果不想使用过多的闭包,你可以用 ES2015 引入的 let 关键词:</p>

<pre class="brush: js">function showHelp(help) {
document.getElementById('help').innerHTML = help;
Expand Down
22 changes: 11 additions & 11 deletions files/zh-cn/web/javascript/data_structures/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ Infinity

尽管一个数字通常仅代表它本身的值,但 JavaScript 提供了一些{{jsxref("Operators", "位运算符")}}。

> **备注:** 虽然位运算符可通过[掩码](https://zh.wikipedia.org/wiki/掩码)同时表示多个布尔类型的值,但这通常被认为是不好的。JavaScript 提供了其他的方式来表示一组布尔值(如一个布尔值数组或一个布尔值分配给命名属性的对象)。掩码也容易使代码变得难以阅读、理解和维护。
> **备注:** 虽然位运算符可通过 [掩码](https://zh.wikipedia.org/wiki/掩码) 同时表示多个布尔类型的值,但这通常被认为是不好的。JavaScript 提供了其他的方式来表示一组布尔值(如一个布尔值数组或一个布尔值分配给命名属性的对象)。掩码也容易使代码变得难以阅读、理解和维护。

在一些非常受限的情况下,可能需要用到这些技术,比如试图应对本地存储的存储限制,或在一些极端场景下(例如,网络传输的每一比特都尤为重要时)。位操作只应该是用来优化字节数的最后选择。

Expand Down Expand Up @@ -135,13 +135,13 @@ JavaScript 的字符串类型用于表示文本数据。它是一组 16 位的

### 符号类型

符号(Symbols)类型是**唯一**且**不可修改**的原始值,并且可以用来作为对象的键(key)(如下),在某些语言当中也有与之相似的类型(原子类型,atoms)。
符号(Symbols)类型是**唯一**且**不可修改**的原始值,并且可以用来作为对象的键 (key)(如下),在某些语言当中也有与之相似的类型(原子类型,atoms)。

更多详情可查看 {{Glossary("Symbol")}} 和 {{jsxref("Symbol")}}。

## 对象

在计算机科学中, 对象(object)是指内存中的可以被{{Glossary("Identifier", "标识符")}}引用的一块区域。
在计算机科学中对象(object)是指内存中的可以被{{Glossary("Identifier", "标识符")}}引用的一块区域。

### 属性

Expand Down Expand Up @@ -217,7 +217,7 @@ JavaScript 的字符串类型用于表示文本数据。它是一组 16 位的

| 特性 | 类型 | 描述 |
| ---------- | ------- | --------------------------------------------- |
| Read-only | Boolean | ES5 [[Writable]] 属性的反状态(Reversed state)。 |
| Read-only | Boolean | ES5 [[Writable]] 属性的反状态 (Reversed state)。 |
| DontEnum | Boolean | ES5 [[Enumerable]] 属性的反状态。 |
| DontDelete | Boolean | ES5 [[Configurable]] 属性的反状态。 |

Expand Down Expand Up @@ -252,20 +252,20 @@ JavaScript 的字符串类型用于表示文本数据。它是一组 16 位的

此外,数组对象还继承了 `Array.prototype` 的一些操作数组的便捷方法。例如,[`indexOf()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)(搜索数组中的一个值)或 [`push()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/push)(向数组中添加一个元素),等等。这使得数组是表示列表或集合的最优选择。

[类型数组(Typed Arrays)](/en-US/docs/Web/JavaScript/Typed_arrays) 是 ECMAScript 2015 中新定义的 JavaScript 内建对象,提供了一个基本的二进制数据缓冲区的类数组视图。下面的表格能帮助你找到对等的 C 语言数据类型:
[类型数组 (Typed Arrays)](/en-US/docs/Web/JavaScript/Typed_arrays) 是 ECMAScript 2015 中新定义的 JavaScript 内建对象,提供了一个基本的二进制数据缓冲区的类数组视图。下面的表格能帮助你找到对等的 C 语言数据类型:

| 类型 | 取值范围 | 占用字节数 | 描述 | Web IDL 类型 | 对等的 C 语言类型 |
| --------------------------------- | --------------------------------- | ------------ | ----------------------------------------------------------- | ---------------------- | --------------------------------- |
| {{jsxref("Int8Array")}} | `-128` 到 `127` | 1 | 8 位有符号整数(补码) | `byte` | `int8_t` |
| {{jsxref("Int8Array")}} | `-128` 到 `127` | 1 | 8 位有符号整数(补码) | `byte` | `int8_t` |
| {{jsxref("Uint8Array")}} | `0` 到 `255` | 1 | 8 位无符号整数 | `octet` | `uint8_t` |
| {{jsxref("Uint8ClampedArray")}} | `0` 到 `255` | 1 | 8 位无符号整数(固定数组) | `octet` | `uint8_t` |
| {{jsxref("Int16Array")}} | `-32768` 到 `32767` | 2 | 16 位有符号整数(补码) | `short` | `int16_t` |
| {{jsxref("Int16Array")}} | `-32768` 到 `32767` | 2 | 16 位有符号整数(补码) | `short` | `int16_t` |
| {{jsxref("Uint16Array")}} | `0` 到 `65535` | 2 | 16 位无符号整数 | `unsigned short` | `uint16_t` |
| {{jsxref("Int32Array")}} | `-2147483648` 到 `2147483647` | 4 | 32 位有符号整数(补码) | `long` | `int32_t` |
| {{jsxref("Int32Array")}} | `-2147483648` 到 `2147483647` | 4 | 32 位有符号整数(补码) | `long` | `int32_t` |
| {{jsxref("Uint32Array")}} | `0` 到 `4294967295` | 4 | 32 位无符号整数 | `unsigned long` | `uint32_t` |
| {{jsxref("Float32Array")}} | `1.2E-38` 到 `3.4E38` | 4 | 32 位 IEEE 浮点数(7 位有效数字,例如:`1.1234567`) | `unrestricted float` | `float` |
| {{jsxref("Float64Array")}} | `5E-324` 到 `1.8E308` | 8 | 64 位 IEEE 浮点数(16 位有效数字,例如:`1.123...15`) | `unrestricted double` | `double` |
| {{jsxref("BigInt64Array")}} | `-2^63` 到 `2^63 - 1` | 8 | 64 位有符号整数(补码) | `bigint` | `int64_t (signed long long)` |
| {{jsxref("Float32Array")}} | `1.2E-38` 到 `3.4E38` | 4 | 32 位 IEEE 浮点数(7 位有效数字,例如:`1.1234567`) | `unrestricted float` | `float` |
| {{jsxref("Float64Array")}} | `5E-324` 到 `1.8E308` | 8 | 64 位 IEEE 浮点数(16 位有效数字,例如:`1.123...15`)| `unrestricted double` | `double` |
| {{jsxref("BigInt64Array")}} | `-2^63` 到 `2^63 - 1` | 8 | 64 位有符号整数(补码) | `bigint` | `int64_t (signed long long)` |
| {{jsxref("BigUint64Array")}} | `0` 到 `2^64 - 1` | 8 | 64 位无符号整数 | `bigint` | `uint64_t (unsigned long long)` |

### 带键的集合:Maps, Sets, WeakMaps, WeakSets
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ <h2 id="统计表">统计表</h2>
<td>true</td>
</tr>
<tr>
<th scope="row">自身的Symbol 键</th>
<th scope="row">自身的 Symbol 键</th>
<td>true</td>
<td>false</td>
<td>true</td>
Expand Down
Loading