扩展运算符的使用
扩展运算符是由三个点组成 ...
,可以用于将一个数组转为逗号分隔的一个参数序列。主要作用就是展开当前数组,一般用于复制数组,合并数组,解构,拆分字符串和转换 Iterator
接口的对象。
复制数组
数组是复合的数据类型,如果我们直接复制一个数组,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组。
示例:
在 ES5
中,我们只能通过方法来复制数组,如下所示:
const a = [1, 2, 3];
const b = a.concat();
console.log(b); // 输出:[ 1, 2, 3 ]
b[0] = 10;
console.log(b); // 输出: [ 10, 2, 3 ]
而 ES6
中不需要使用方法,直接通过扩展运算符,就可以复制数组,如下所示:
const a = [1, 2, 3];
const b = [...a];
console.log(b); // 输出:[ 1, 2, 3 ]
上述代码还有一种写法,如下所示:
const a = [1, 2, 3];
const [...b] = a;
console.log(b); // 输出:[ 1, 2, 3 ]
这两种写法其实是一样, b
都是 a
的克隆。
合并数组
扩展运算符除了可以让我们更方便的复制数组,还提供了数组合并的新写法。
示例:
如果我们在 ES5
中合并数组,可以像下面这样写,需要用到一个 concat()
方法:
const arr1 = ['xkd'];
const arr2 = ['mark'];
const arr3 = ['summer', 'sun'];
console.log(arr1