Skip to content

Commit 5c49d62

Browse files
committed
update some charactors to [Jun 28, 2020]
1 parent 1718241 commit 5c49d62

File tree

19 files changed

+63
-40
lines changed

19 files changed

+63
-40
lines changed

Diff for: 1-js/02-first-steps/01-hello-world/article.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ JavaScript 程序可以在 `<script>` 标签的帮助下插入到 HTML 文档的
7878
我们也可以提供一个完整的 URL 地址,例如:
7979

8080
```html
81-
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js"></script>
81+
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
8282
```
8383

8484
要附加多个脚本,请使用多个标签:

Diff for: 1-js/02-first-steps/03-strict-mode/article.md

+18-15
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@
1919
...
2020
```
2121

22-
稍后我们才会学习函数(一种组合命令的方式)。
23-
24-
但我们可以提前了解一下,`"use strict"` 可以被放在函数主体的开头,而不是整个脚本的开头。这样则可以只在该函数中启用严格模式。但通常人们会在整个脚本中启用严格模式。
22+
很快我们就会学习到函数(一种组合命令的方式),所以让我们提前注意一下,`"use strict"` 可以被放在函数体的开头。这样则可以只在该函数中启用严格模式。但通常人们会在整个脚本中启用严格模式。
2523

2624
````warn header="确保 \"use strict\" 出现在最顶部"
2725
请确保 `"use strict"` 出现在脚本的最顶部,否则严格模式可能无法启用。
@@ -48,11 +46,13 @@ alert("some code");
4846
4947
## 浏览器控制台
5048
51-
以后,当你使用浏览器控制台去测试功能时,请注意 `use strict` 默认不会被启动。
49+
当你使用 [开发者控制台](info:devtools) 运行代码时,请注意它默认是不启动 `use strict` 的。
50+
51+
有时,当 `use strict` 会对代码产生一些影响时,你会得到错误的结果。
5252
53-
有时,使用 `use strict` 会产生一些不一样的影响,你会得到错误的结果。
53+
那么,怎么在控制台中启用 `use strict` 呢?
5454
55-
你可以试试按下 `key:Shift+Enter` 去输入多行代码,然后将 `use strict` 置顶,就像这样:
55+
首先,你可以尝试搭配使用 `key:Shift+Enter` 按键去输入多行代码,然后将 `use strict` 放在代码最顶部,就像这样:
5656
5757
```js
5858
'use strict'; <Shift+Enter 换行>
@@ -62,7 +62,7 @@ alert("some code");
6262

6363
它在大部分浏览器中都有效,像 Firefox 和 Chrome。
6464

65-
如果依然不行,那确保 `use strict` 被开启的最可靠的方法是,像这样将代码输入到控制台
65+
如果依然不行,例如你使用的是旧版本的浏览器,那么有一种很丑但可靠的启用 `use strict` 的方法。将你的代码放在这样的包装器中
6666

6767
```js
6868
(function() {
@@ -72,15 +72,18 @@ alert("some code");
7272
})()
7373
```
7474

75-
## 总是使用 "use strict"
75+
## 我们应该使用 "use strict" 吗?
76+
77+
这个问题的答案好像很显而易见,但事实并非如此。
78+
79+
有人可能会建议在脚本的最顶部放置 `"use strict"` 这行代码…… 但你知道更酷的方式吗?
80+
81+
现代 JavaScript 支持 "classes" 和 "modules" —— 高级语言结构(本教程后续章节会讲到),它们会自动启用 `use strict`。因此,如果我们使用它们,则无需添加 `"use strict"` 指令。
7682

77-
我们还没说到使用 `"use strict"` 与“默认”模式的区别
83+
**因此,目前我们欢迎将 `"use strict";` 写在脚本的顶部。稍后,当你的代码全都写在了 class 和 module 中时,你则可以将 `"use strict";` 这行代码省略掉
7884

79-
在接下来的章节中,当我们学习语言功能时,我们会标注严格模式与默认模式的差异。幸运的是,差异其实没有那么多。并且这些差异可以让我们更好地编程
85+
目前,我们已经基本了解了 `use strict`
8086

81-
当前,一般来说了解这些就够了:
87+
在接下来的章节中,当我们学习语言功能时,我们会看到严格模式与旧的模式之间的差异。幸运的是,差异其实没有那么多。并且,这些差异实际上提升了我们的编程体验。
8288

83-
1. `"use strict"` 指令将浏览器引擎转换为“现代”模式,改变一些内建特性的行为。我们会在之后的学习中了解这些细节。
84-
2. 严格模式通过将 `"use strict"` 放置在整个脚本或函数的顶部来启用。一些新语言特性诸如 "classes" 和 "modules" 也会自动开启严格模式。
85-
3. 所有的现代浏览器都支持严格模式。
86-
4. 我们建议始终使用 `"use strict"` 启动脚本。本教程的所有例子都默认采用严格模式,除非特别指定(非常少)。
89+
本教程的所有例子都默认采用严格模式,除非特别指定(非常少)。

Diff for: 1-js/02-first-steps/04-variables/article.md

+15-2
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ let user = 'John'
8080

8181
技术上讲,这些变体都有一样的效果。所以,这是个个人品味和审美方面的问题。
8282

83-
8483
````smart header="`var` 而不是 `let`"
8584
在较旧的脚本中,你也可能发现另一个关键字 `var`,而不是 `let`
8685

@@ -135,6 +134,20 @@ alert(hello); // Hello world!
135134
alert(message); // Hello world!
136135
```
137136
137+
````warn header="声明两次会触发 error"
138+
一个变量应该只被声明一次。
139+
140+
对同一个变量进行重复声明会触发 error:
141+
142+
```js run
143+
let message = "This";
144+
145+
// 重复 'let' 会导致 error
146+
let message = "That"; // SyntaxError: 'message' has already been declared
147+
```
148+
因此,我们对同一个变量应该只声明一次,之后在不使用 `let` 的情况下对其进行引用。
149+
````
150+
138151
```smart header="函数式语言"
139152
有趣的是,也存在禁止更改变量值的 [函数式](https://en.wikipedia.org/wiki/Functional_programming) 编程语言。比如 [Scala](http://www.scala-lang.org/) 或 [Erlang](http://www.erlang.org/)。
140153
@@ -190,7 +203,7 @@ let имя = '...';
190203
let 我 = '...';
191204
```
192205
193-
技术上讲,完全没有错误,这样的命名是完全允许的,但是用英文进行变量命名是国际传统。哪怕我们正在写一个很小的脚本,它也有可能有很长的生命周期。某个时候,来自其他国家的人可能会阅读它
206+
从技术上讲,这样没问题。这样的命名是完全允许的,但是用英文进行变量命名是国际惯例。哪怕我们正在写一个很小的脚本,它也有可能会被使用很久。某个时候,来自其他国家的人可能会需要阅读它
194207
````
195208

196209
````warn header="保留字"

Diff for: 1-js/02-first-steps/05-types/article.md

+29-22
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
# 数据类型
22

3-
JavaScript 中的变量可以保存任何数据。变量在前一刻可以是个字符串,下一刻就可以变成 number 类型:
3+
JavaScript 中的值都具有特定的类型。例如,字符串或数字。
4+
5+
在 JavaScript 中有 8 种基本的数据类型(译注:7 种原始类型和 1 种引用类型)。在这里,我们将对它们进行大体的介绍,在下一章中,我们将详细讨论它们。
6+
7+
我们可以将任何类型的值存入变量。例如,一个变量可以在前一刻是个字符串,下一刻就存储一个数字:
48

59
```js
610
// 没有错误
711
let message = "hello";
812
message = 123456;
913
```
1014

11-
允许这种操作的编程语言称为“动态类型”(dynamically typed)的编程语言,意思是虽然编程语言中有不同的数据类型,但是你定义的变量并不会在定义后,被限制为某一数据类型。
12-
13-
在 JavaScript 中有八种基本的数据类型。这一章我们会学习数据类型的基本知识,在下一章我们会对他们一一进行详细讲解。
15+
允许这种操作的编程语言,例如 JavaScript,被称为“动态类型”(dynamically typed)的编程语言,意思是虽然编程语言中有不同的数据类型,但是你定义的变量并不会在定义后,被限制为某一数据类型。
1416

1517
## Number 类型
1618

@@ -64,21 +66,23 @@ n = 12.345;
6466

6567
## BigInt 类型
6668

67-
在 JavaScript 中,"number" 类型无法代表大于 <code>2<sup>53</sup></code>(或小于 <code>-2<sup>53</sup></code>)的整数,这是其内部表示形式导致的技术限制。这大约是 16 位的十进制数字,因此在大多数情况下,这个限制不是问题,但有时我们需要很大的数字,例如用于加密或微秒精度的时间戳。
69+
在 JavaScript 中,"number" 类型无法代表大于 <code>(2<sup>53</sup>-1)</code>(即 `9007199254740991`),或小于 <code>-(-2<sup>53</sup>-1)</code>。这是其内部表示形式导致的技术限制。
70+
71+
在大多数情况下,这个范围就足够了,但有时我们需要很大的数字,例如用于加密或微秒精度的时间戳。
6872

6973
`BigInt` 类型是最近被添加到 JavaScript 语言中的,用于表示任意长度的整数。
7074

71-
通过将 `n` 附加到整数字段的末尾来创建 `BigInt`
75+
可以通过将 `n` 附加到整数字段的末尾来创建 `BigInt`
7276

7377
```js
7478
// 尾部的 "n" 表示这是一个 BigInt 类型
7579
const bigInt = 1234567890123456789012345678901234567890n;
7680
```
7781

78-
由于很少需要 `BigInt` 类型的数字,因此我们在单独的章节 <info:bigint> 中专门对其进行介绍
82+
由于很少需要 `BigInt` 类型的数字,我们在这没有对其进行讲解,我们在单独的章节 <info:bigint> 中专门对其进行了介绍。当你需要使用那样的大数字的时候,可以去阅读该章节
7983

8084
```smart header="兼容性问题"
81-
目前 FirefoxChrome 已经支持 `BigInt` 了,但 Safari/IE/Edge 还没有。
85+
目前 Firefox/Chrome/Edge 已经支持 `BigInt` 了,但 Safari/IE 还没有。
8286
```
8387

8488
## String 类型
@@ -163,7 +167,7 @@ let age = null;
163167

164168
JavaScript 中的 `null` 仅仅是一个代表“无”、“空”或“值未知”的特殊值。
165169

166-
上面的代码表示,由于某些原因,`age` 是未知或空的
170+
上面的代码表示 `age` 是未知的
167171

168172
## "undefined" 值
169173

@@ -174,30 +178,33 @@ JavaScript 中的 `null` 仅仅是一个代表“无”、“空”或“值未
174178
如果一个变量已被声明,但未被赋值,那么它的值就是 `undefined`
175179

176180
```js run
177-
let x;
181+
let age;
178182

179-
alert(x); // 弹出 "undefined"
183+
alert(age); // 弹出 "undefined"
180184
```
181185

182-
原理上来说,可以为任何变量赋值为 `undefined`
186+
从技术上讲,可以显式地将 `undefined` 赋值给变量
183187

184188
```js run
185-
let x = 123;
189+
let age = 100;
186190

187-
x = undefined;
191+
// 将值修改为 undefined
192+
age = undefined;
188193

189-
alert(x); // "undefined"
194+
alert(age); // "undefined"
190195
```
191196

192-
……但是不建议这样做。通常,使用使用 `null` 将一个“空”或者“未知”的值写入变量中,`undefined` 仅仅用于检验,例如查看变量是否被赋值或者其他类似的操作
197+
……但是不建议这样做。通常,使用 `null` 将一个“空”或者“未知”的值写入变量中,`undefined` 则保留作为未进行初始化的事物的默认初始值
193198

194199
## object 类型和 symbol 类型
195200

196201
`object` 类型是一个特殊的类型。
197202

198-
其他所有的数据类型都被称为“原生类型”,因为它们的值只包含一个单独的内容(字符串、数字或者其他)。相反,`object` 则用于储存数据集合和更复杂的实体。在充分了解原生类型之后,我们将会在 <info:object> 一节中介绍 `object`
203+
其他所有的数据类型都被称为“原始类型”,因为它们的值只包含一个单独的内容(字符串、数字或者其他)。相反,`object` 则用于储存数据集合和更复杂的实体。
204+
205+
因为它非常重要,所以我们对其进行单独讲解。在充分学习了原始类型后,我们将会在 <info:object> 一章中介绍 `object`
199206

200-
`symbol` 类型用于创建对象的唯一标识符。我们在这里提到 `symbol` 类型是为了学习的完整性,但我们会在学完 `object` 类型后再学习它。
207+
`symbol` 类型用于创建对象的唯一标识符。我们在这里提到 `symbol` 类型是为了完整性,但我们要在学完 `object` 类型后再学习它。
201208

202209
## typeof 运算符 [#type-typeof]
203210

@@ -241,16 +248,16 @@ typeof alert // "function" (3)
241248
最后三行可能需要额外的说明:
242249

243250
1. `Math` 是一个提供数学运算的内建 `object`。我们会在 <info:number> 一节中学习它。此处仅作为一个 `object` 的示例。
244-
2. `typeof null` 的结果是 `"object"`这其实是不对的。官方也承认了这是 `typeof` 运算符的问题,现在只是为了兼容性而保留了下来。当然,`null` 不是一个 `object``null` 有自己的类型,它是一个特殊值。再次强调,这是 JavaScript 语言的一个错误
245-
3. `typeof alert` 的结果是 `"function"`,因为 `alert` 在 JavaScript 语言中是一个函数。我们会在下一章学习函数,那时我们会了解到,在 JavaScript 语言中没有一个特别的 "function" 类型。函数隶属于 `object` 类型。但是 `typeof` 会对函数区分对待。这不是很正确的做法,但在实际编程中非常方便
251+
2. `typeof null` 的结果是 `"object"`这是官方承认的 `typeof` 的行为上的错误,这个问题来自于 JavaScript 语言的早期,并为了兼容性而保留了下来。`null` 绝对不是一个 `object``null` 有自己的类型,它是一个特殊值。
252+
3. `typeof alert` 的结果是 `"function"`,因为 `alert` 在 JavaScript 语言中是一个函数。我们会在下一章学习函数,那时我们会了解到,在 JavaScript 语言中没有一个特别的 "function" 类型。函数隶属于 `object` 类型。但是 `typeof` 会对函数区分对待,并返回 `"function"`。这也是来自于 JavaScript 语言早期的问题。从技术上讲,这种行为是不正确的,但在实际编程中却非常方便
246253

247254
## 总结
248255

249256
JavaScript 中有八种基本的数据类型(译注:前七种为基本数据类型,也称为原始类型,而 `object` 为复杂数据类型)。
250257

251258
- `number` 用于任何类型的数字:整数或浮点数,在 ±2<sup>53</sup> 范围内的整数。
252259
- `bigint` 用于任意长度的整数。
253-
- `string` 用于字符串:一个字符串可以包含一个或多个字符,所以没有单独的单字符类型。
260+
- `string` 用于字符串:一个字符串可以包含 0 个或多个字符,所以没有单独的单字符类型。
254261
- `boolean` 用于 `true``false`
255262
- `null` 用于未知的值 —— 只有一个 `null` 值的独立类型。
256263
- `undefined` 用于未定义的值 —— 只有一个 `undefined` 值的独立类型。
@@ -263,4 +270,4 @@ JavaScript 中有八种基本的数据类型(译注:前七种为基本数据
263270
- 以字符串的形式返回类型名称,例如 `"string"`
264271
- `typeof null` 会返回 `"object"` —— 这是 JavaScript 编程语言的一个错误,实际上它并不是一个 `object`
265272

266-
在接下来的章节中,我们将重点介绍原生类型值,当你掌握了原生数据类型后,我们将继续学习 `object`
273+
在接下来的章节中,我们将重点介绍原始类型值,当你掌握了原始数据类型后,我们将继续学习 `object`

Diff for: figures.sketch

117 KB
Binary file not shown.

0 commit comments

Comments
 (0)