3737
3838上面代码的foo函数,如果调用的时候没有参数,就会调用默认值throwIfMissing函数,从而抛出一个错误。
3939
40- ## rest(...)运算符
40+ ## rest参数
4141
42- ES6引入rest运算符 (...),用于获取函数的多余参数,这样就不需要使用arguments.length了。rest运算符后面是一个数组变量 ,该变量将多余的参数放入数组中。
42+ ES6引入rest参数 (...变量名 ),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest参数搭配的变量是一个数组 ,该变量将多余的参数放入数组中。
4343
4444``` javascript
4545
@@ -57,9 +57,9 @@ add(2, 5, 3) // 10
5757
5858```
5959
60- 上面代码的add函数是一个求和函数,利用rest运算符 ,可以向该函数传入任意数目的参数。
60+ 上面代码的add函数是一个求和函数,利用rest参数 ,可以向该函数传入任意数目的参数。
6161
62- 下面是一个利用rest运算符改写数组push方法的例子 。
62+ 前面说过,rest参数中的变量代表一个数组,所以数组特有的方法都可以用于这个变量。下面是一个利用rest参数改写数组push方法的例子 。
6363
6464``` javascript
6565
@@ -71,7 +71,7 @@ function push(array, ...items) {
7171}
7272
7373var a = [];
74- push (a, " a1 " , " a2 " , " a3 " , " a4 " );
74+ push (a, 1 , 2 , 3 )
7575
7676```
7777
@@ -86,22 +86,26 @@ function f(a, ...b, c) {
8686
8787```
8888
89- rest运算符不仅可以用于函数定义,还可以用于函数调用。
89+ ## 扩展运算符
90+
91+ 扩展运算符(spread)是三个点(...)。它好比rest参数的逆运算,将一个数组转为用逗号分隔的参数序列。该运算符主要用于函数调用。
9092
9193``` javascript
9294
93- function f ( s1 , s2 , s3 , s4 , s5 ) {
94- console . log (s1 + s2 + s3 + s4 + s5 );
95+ function push ( array , ... items ) {
96+ array . push ( ... items );
9597}
9698
97- var a = [" a2" , " a3" , " a4" , " a5" ];
99+ function add (x , y ) {
100+ return x + y;
101+ }
98102
99- f ( " a1 " , ... a)
100- // a1a2a3a4a5
103+ var numbers = [ 4 , 38 ];
104+ add ( ... numbers) // 42
101105
102106```
103107
104- 从上面的例子可以看出,rest运算符的另一个重要作用是,可以将数组转变成正常的参数序列。利用这一点,可以简化求出一个数组最大元素的写法 。
108+ 扩展运算符可以简化求出一个数组最大元素的写法 。
105109
106110``` javascript
107111
@@ -116,7 +120,21 @@ Math.max(14, 3, 77);
116120
117121```
118122
119- 上面代码表示,由于JavaScript不提供求数组最大元素的函数,所以只能套用Math.max函数,将数组转为一个参数序列,然后求最大值。有了rest运算符以后,就可以直接用Math.max了。
123+ 上面代码表示,由于JavaScript不提供求数组最大元素的函数,所以只能套用Math.max函数,将数组转为一个参数序列,然后求最大值。有了扩展运算符以后,就可以直接用Math.max了。
124+
125+ 扩展运算符还可以用于数组的赋值。
126+
127+ ``` javascript
128+
129+ var a = [1 ];
130+ var b = [2 , 3 , 4 ];
131+ var c = [6 , 7 ];
132+ var d = [0 , ... a, ... b, 5 , ... c];
133+
134+ d
135+ // [0, 1, 2, 3, 4, 5, 6, 7]
136+
137+ ```
120138
121139## 箭头函数
122140
0 commit comments