ES6数组之扩展运算符应用场景详解

文章目录

    • 扩展运算符
    • 数组的拓展之扩展运算符的应用场景
      • 数组传参
      • 复制数组
      • 合并数组
      • 解构赋值
      • 字符串转数组
      • 类数组转真数组

扩展运算符

扩展运算符(spread)是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。

ES6数组之扩展运算符应用场景详解_第1张图片
ES6数组之扩展运算符应用场景详解_第2张图片
ES6数组之扩展运算符应用场景详解_第3张图片

如果扩展运算符后面是一个空数组,则不产生任何效果
ES6数组之扩展运算符应用场景详解_第4张图片

可以放置表达式
ES6数组之扩展运算符应用场景详解_第5张图片

只有函数调用才可以放置在圆括号中
ES6数组之扩展运算符应用场景详解_第6张图片

数组的拓展之扩展运算符的应用场景

数组传参

由于扩展运算符可以展开数组,所以不再需要apply方法,将数组转为函数的参数了。
ES6数组之扩展运算符应用场景详解_第7张图片

扩展运算符取代apply方法的一个实际的例子,应用Math.max()方法,简化求出一个数组最大元素的写法
ES6数组之扩展运算符应用场景详解_第8张图片
通过push方法,将一个数组添加到另一个数组的尾部

ES6数组之扩展运算符应用场景详解_第9张图片

复制数组

ES6数组之扩展运算符应用场景详解_第10张图片

a2并不是a1的克隆,而是指向同一份数据的另一个指针。修改a2,会直接导致a1的变化。

ES6数组之扩展运算符应用场景详解_第11张图片

上面代码中,a1会返回原数组的克隆,再修改a2就不会对a1产生影响。

扩展运算符提供了复制数组的简便写法。
ES6数组之扩展运算符应用场景详解_第12张图片

合并数组

ES6数组之扩展运算符应用场景详解_第13张图片

ES6数组之扩展运算符应用场景详解_第14张图片

注意一点: 如果数组里面的项目有对象的, 那么这个对象的复制是属于浅复制, 也就是说, 只会复制对象的地址

解构赋值

ES6数组之扩展运算符应用场景详解_第15张图片

字符串转数组

在这里插入图片描述

类数组转真数组

在这里插入图片描述

querySelectorAll方法返回的是一个NodeList对象。它不是数组,而是一个类似数组的对象。这时,扩展运算符可以将其转为真正的数组,原因就在于NodeList对象实现了 Iterator(后面会讲的)
对于那些没有部署 Iterator 接口的类似数组的对象,扩展运算符就无法将其转为真正的数组。

你可能感兴趣的:(ES6)