simple's Studio.

ES6中的展开运算符

2017/11/03

展开运算符
展开运算符(用三个连续的点 ( … ) 表示)是 ES6 中的新概念,使你能够将字面量对象展开为多个元素。

我们通过几个示例看看它的原理。

const books = ["Don Quixote", "The Hobbit", 
"Alice in Wonderland", "Tale of Two Cities"];
console.log(...books);
Prints: Don Quixote The Hobbit Alice in Wonderland Tale of Two Cities
const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19, 23, 29]);
console.log(...primes);

Prints: 2 3 5 7 11 13 17 19 23 29
如果查看上述示例的输出,会发现数组和集合都扩展开了单个元素。这有什么用?

注意:集合是 ES6 中的全新内置对象。我们将在第 3 节课详细讲解集合。
使用 concat 方法结合数组
展开运算符的一个用途是结合数组。

如果你需要结合多个数组,在有展开运算符之前,必须使用 Array 的 concat() 方法。

const fruits = ["apples", "bananas", "pears"];
const vegetables = ["corn", "potatoes", "carrots"];
const produce = fruits.concat(vegetables);
console.log(produce);
Prints: ["apples", "bananas", "pears", "corn", "potatoes", "carrots"]

并不算太糟糕,但是如果有简写方法,会不会更好?

例如,如下所示…

⚠️ 接下来会出现 const 警告 ⚠️
如果你通过复制/粘贴代码跟着操作,那么你已经使用 const 关键字声明了 produce 变量。以下代码将尝试重新声明变量并对其重新赋值,因此可能会出现错误,取决于你运行代码的方式。

注意,使用 const 声明的变量不能在同一作用域内重新声明或重新赋值。
const produce = [fruits, vegetables];
console.log(produce);
Prints: [Array[3], Array[3]]
遗憾的是,不可行。

这段代码实际上将 fruits 数组添加到 produce 数组的第一个索引处,将 vegetables 数组添加到第二个索引处。

CATALOG