Skip to content

Commit b2a2c58

Browse files
committed
docs(function): edit error
1 parent 6097cc3 commit b2a2c58

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

docs/function.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1331,7 +1331,7 @@ clownsEverywhere(
13311331

13321332
## catch 语句的参数
13331333

1334-
目前,有一个[提案](https://github.com/tc39/proposal-optional-catch-binding),允许`try...catch`结构中的`catch`语句调用时不带有参数。这个提案跟参数有关,也放在这一章介绍。
1334+
ES2018 [允许](https://github.com/tc39/proposal-optional-catch-binding)`try...catch`结构的`catch`语句不带有参数。这个提案跟参数有关,也放在这一章介绍。
13351335

13361336
传统的写法是`catch`语句必须带有参数,用来接收`try`代码块抛出的错误。
13371337

@@ -1343,6 +1343,8 @@ try {
13431343
}
13441344
```
13451345

1346+
上面代码中,即使没有用到`error`,传统写法也是不允许省略。
1347+
13461348
新的写法允许省略`catch`后面的参数,而不报错。
13471349

13481350
```javascript
@@ -1364,4 +1366,4 @@ try {
13641366
}
13651367
```
13661368

1367-
上面代码中,`JSON.parse`报错只有一种可能:解析失败。因此,可以不需要抛出的错误实例
1369+
上面代码中,`JSON.parse`报错只有一种可能:解析失败。所以一旦报错,基本上不需要用到错误实例,所以可以省略`catch`后面的参数

docs/symbol.md

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -569,21 +569,25 @@ a2[1] = 6;
569569
class MyArray extends Array {
570570
}
571571

572-
const a = new MyArray();
573-
a.map(x => x) instanceof MyArray // true
572+
const a = new MyArray(1, 2, 3);
573+
const b = a.map(x => x);
574+
const c = a.filter(x => x > 1);
575+
576+
b instanceof MyArray // true
577+
c instanceof MyArray // true
574578
```
575579

576-
上面代码中,子类`MyArray`继承了父类`Array``a.map(x => x)`会创建一个`MyArray`的衍生对象,该衍生对象还是`MyArray`的实例。
580+
上面代码中,子类`MyArray`继承了父类`Array``a``MyArray`的实例,`b``c``a`的衍生对象。你可能会认为,`b``c`都是调用数组方法生成的,所以应该是数组(`Array`的实例),但实际上它们也是`MyArray`的实例。
577581

578-
现在,`MyArray`设置`Symbol.species`属性。
582+
`Symbol.species`属性就是为了解决这个问题而提供的。现在,我们可以为`MyArray`设置`Symbol.species`属性。
579583

580584
```javascript
581585
class MyArray extends Array {
582586
static get [Symbol.species]() { return Array; }
583587
}
584588
```
585589

586-
上面代码中,由于定义了`Symbol.species`属性,创建衍生对象时就会使用这个属性返回的函数,作为构造函数。这个例子也说明,定义`Symbol.species`属性要采用`get`读取器。默认的`Symbol.species`属性等同于下面的写法。
590+
上面代码中,由于定义了`Symbol.species`属性,创建衍生对象时就会使用这个属性返回的函数,作为构造函数。这个例子也说明,定义`Symbol.species`属性要采用`get`取值器。默认的`Symbol.species`属性等同于下面的写法。
587591

588592
```javascript
589593
static get [Symbol.species]() {
@@ -599,11 +603,13 @@ class MyArray extends Array {
599603
}
600604

601605
const a = new MyArray();
602-
a.map(x => x) instanceof MyArray // false
603-
a.map(x => x) instanceof Array // true
606+
const b = a.map(x => x);
607+
608+
b instanceof MyArray // false
609+
b instanceof Array // true
604610
```
605611

606-
上面代码中,`a.map(x => x)`创建的衍生对象,就不是`MyArray`的实例,而直接就是`Array`的实例。
612+
上面代码中,`a.map(x => x)`生成的衍生对象,就不是`MyArray`的实例,而直接就是`Array`的实例。
607613

608614
再看一个例子。
609615

0 commit comments

Comments
 (0)