diff --git a/docs/generator.md b/docs/generator.md index 315d164..9efebf8 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -1301,7 +1301,7 @@ function scheduler(task) { } ``` -注意,上面这种做法,只适合同步操作,即所有的`task`都必须是同步的,不能有异步操作。因为这里的代码一得到返回值,就继续往下执行,没有判断异步操作何时完成。如果要控制异步的操作流程,详见下一节。 +注意,上面这种做法,只适合同步操作,即所有的`task`都必须是同步的,不能有异步操作。因为这里的代码一得到返回值,就继续往下执行,没有判断异步操作何时完成。如果要控制异步的操作流程,详见后面的《异步操作》一章。 下面,利用`for...of`循环会自动依次执行`yield`命令的特性,提供一种更一般的控制流管理的方法。 @@ -1331,7 +1331,7 @@ function *iterateJobs(jobs){ } ``` -上面代码中,数组`jobs`封装了一个项目的多个任务,Generator函数`iterateJobs`则是依次为这些任务加上`yield *`命令(`yield *`命令的介绍详见后文)。 +上面代码中,数组`jobs`封装了一个项目的多个任务,Generator函数`iterateJobs`则是依次为这些任务加上`yield *`命令。 最后,就可以用`for...of`循环一次性依次执行所有任务的所有步骤。 @@ -1341,7 +1341,7 @@ for (var step of iterateJobs(jobs)){ } ``` -再次提醒,上面的做法只能用于所有步骤都是同步操作的情况,不能有异步操作的步骤。如果想要依次执行异步的步骤,必须使用下一章介绍的方法。 +再次提醒,上面的做法只能用于所有步骤都是同步操作的情况,不能有异步操作的步骤。如果想要依次执行异步的步骤,必须使用后面的《异步操作》一章介绍的方法。 `for...of`的本质是一个`while`循环,所以上面的代码实质上执行的是下面的逻辑。 @@ -1356,9 +1356,9 @@ while (!res.done){ } ``` -### (3)部署iterator接口 +### (3)部署Iterator接口 -利用Generator函数,可以在任意对象上部署iterator接口。 +利用Generator函数,可以在任意对象上部署Iterator接口。 ```javascript function* iterEntries(obj) { @@ -1379,7 +1379,7 @@ for (let [key, value] of iterEntries(myObj)) { // bar 7 ``` -上述代码中,myObj是一个普通对象,通过iterEntries函数,就有了iterator接口。也就是说,可以在任意对象上部署next方法。 +上述代码中,`myObj`是一个普通对象,通过`iterEntries`函数,就有了Iterator接口。也就是说,可以在任意对象上部署`next`方法。 下面是一个对数组部署Iterator接口的例子,尽管数组原生具有这个接口。 diff --git a/docs/string.md b/docs/string.md index b78aa17..4edf47c 100644 --- a/docs/string.md +++ b/docs/string.md @@ -191,7 +191,7 @@ ES5对字符串对象提供`charAt`方法,返回字符串给定位置的字符 ## normalize() -许多欧洲语言有语调符号和重音符合。为了表示它们,Unicode提供了两种方法。一种是直接提供带重音符号的字符,比如`Ǒ`(\u01D1)。另一种是提供合成符号(combining character),即原字符与重音符号的合成,两个字符合成一个字符,比如`O`(\u004F)和`ˇ`(\u030C)合成`Ǒ`(\u004F\u030C)。 +许多欧洲语言有语调符号和重音符号。为了表示它们,Unicode提供了两种方法。一种是直接提供带重音符号的字符,比如`Ǒ`(\u01D1)。另一种是提供合成符号(combining character),即原字符与重音符号的合成,两个字符合成一个字符,比如`O`(\u004F)和`ˇ`(\u030C)合成`Ǒ`(\u004F\u030C)。 这两种表示方法,在视觉和语义上都等价,但是JavaScript不能识别。