1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-25 03:02:21 +00:00

docs(array): edit spread operator #694

This commit is contained in:
ruanyf 2018-06-05 16:48:43 +08:00
parent 688ca45e6f
commit cdc7e48d93

View File

@ -163,14 +163,9 @@ const [...a2] = a1;
扩展运算符提供了数组合并的新写法。 扩展运算符提供了数组合并的新写法。
```javascript ```javascript
// ES5 const arr1 = ['a', 'b'];
[1, 2].concat(more) const arr2 = ['c'];
// ES6 const arr3 = ['d', 'e'];
[1, 2, ...more]
var arr1 = ['a', 'b'];
var arr2 = ['c'];
var arr3 = ['d', 'e'];
// ES5 的合并数组 // ES5 的合并数组
arr1.concat(arr2, arr3); arr1.concat(arr2, arr3);
@ -181,6 +176,21 @@ arr1.concat(arr2, arr3);
// [ 'a', 'b', 'c', 'd', 'e' ] // [ 'a', 'b', 'c', 'd', 'e' ]
``` ```
不过,这两种方法都是浅拷贝,使用的时候需要注意。
```javascript
const a1 = [{ foo: 1 }];
const a2 = [{ bar: 2 }];
const a3 = a1.concat(a2);
const a4 = [...a1, ...a2];
a3[0] === a1[0] // true
a4[0] === a1[0] // true
```
上面代码中,`a3``a4`是用两种不同方法合并而成的新数组,但是它们的成员都是对原数组成员的引用,这就是浅拷贝。如果修改了原数组的成员,会同步反映到新数组。
**3与解构赋值结合** **3与解构赋值结合**
扩展运算符可以与解构赋值结合起来,用于生成数组。 扩展运算符可以与解构赋值结合起来,用于生成数组。