S6引入了一个称为散布运算符的新运算符,它由三个点(...)组成。 它允许迭代器在期望参数超过零的地方扩展。 它赋予从数组中获取参数的特权。
传播(Spread)运算符的语法与rest参数相似,但是完全相反。 让我们了解一下散布运算符的语法。
语法

  1. let variablename1 = [...value];

上面语法中的三个点(...)是散布运算符,其目标是特定变量中的整个值。
让我们尝试了解散布运算符在不同情况下的用法:

1. 散布运算符和数组操作

下面来看看如何使用散布运算符来操纵数组。

1.1. 构造数组文字

当使用文字形式构造数组时,散布运算符允许在初始化的数组中插入另一个数组。
示例

  1. let hotFruits = ['香蕉', '芒果'];
  2. let allFruits = [...hotFruits, '励志', '龙眼', '苹果'];
  3. console.log(allFruits);

运行上面实例代码,得到以下结果:

  1. [ '香蕉', '芒果', '励志', '龙眼', '苹果' ]

1.2. 串联数组

散布运算符还可用于连接两个或多个数组。

  1. let hotFruits = ['香蕉', '芒果'];
  2. let allFruits = [...hotFruits, '励志', '龙眼', '苹果'];
  3. console.log(allFruits);

运行上面实例代码,得到以下结果:

  1. [ '香蕉', '芒果', '励志', '龙眼', '苹果' ]

1.3. 复制数组

还可以使用散布运算符复制数组的实例。
示例

  1. let colors = ['Red', 'Yellow'];
  2. let newColors = [...colors];
  3. console.log(newColors);

如果在不使用散布运算符的情况下复制数组元素,则在复制的数组中插入新元素将影响原始数组。但是,如果使用散布运算符复制数组,则在复制的数组中插入元素不会影响原始数组。
示例
不使用散布运算符

  1. let colors = ['Red', 'Yellow'];
  2. let newColors = colors;
  3. newColors.push('Green');
  4. console.log(newColors);
  5. console.log(colors);

运行上面示例代码,结果如下:

  1. [ 'Red', 'Yellow', 'Green' ]
  2. [ 'Red', 'Yellow', 'Green' ]

使用散布运算符

  1. let colors = ['Red', 'Yellow'];
  2. let newColors = [...colors];
  3. newColors.push('Green');
  4. console.log(newColors);
  5. console.log(colors);

运行上面示例代码,结果如下:

  1. [ 'Red', 'Yellow', 'Green' ]
  2. [ 'Red', 'Yellow' ]

注:散布运算符只需复制阵列本身到新的一个。 这意味着操作符可以执行浅拷贝而不是深拷贝。

2.散布运算符和字符串

让我们看看散布操作符如何传播字符串。
示例
在这里,从单个字符串构造了一个数组str

  1. let str = ['A', ...'EIO', 'U'];
  2. console.log(str);

在上面的示例中,我们将散布运算符应用于字符串:EIO。 它将EIO字符串的每个特定字符散布成单个字符。执行以上代码后,获得以下输出结果:

  1. [ 'A', 'E', 'I', 'O', 'U' ]