Skip to content

Commit cdc7e48

Browse files
committed
docs(array): edit spread operator ruanyf#694
1 parent 688ca45 commit cdc7e48

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

docs/array.md

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -163,24 +163,34 @@ const [...a2] = a1;
163163
扩展运算符提供了数组合并的新写法。
164164

165165
```javascript
166-
// ES5
167-
[1, 2].concat(more)
168-
// ES6
169-
[1, 2, ...more]
170-
171-
var arr1 = ['a', 'b'];
172-
var arr2 = ['c'];
173-
var arr3 = ['d', 'e'];
166+
const arr1 = ['a', 'b'];
167+
const arr2 = ['c'];
168+
const arr3 = ['d', 'e'];
174169

175-
// ES5的合并数组
170+
// ES5 的合并数组
176171
arr1.concat(arr2, arr3);
177172
// [ 'a', 'b', 'c', 'd', 'e' ]
178173

179-
// ES6的合并数组
174+
// ES6 的合并数组
180175
[...arr1, ...arr2, ...arr3]
181176
// [ 'a', 'b', 'c', 'd', 'e' ]
182177
```
183178

179+
不过,这两种方法都是浅拷贝,使用的时候需要注意。
180+
181+
```javascript
182+
const a1 = [{ foo: 1 }];
183+
const a2 = [{ bar: 2 }];
184+
185+
const a3 = a1.concat(a2);
186+
const a4 = [...a1, ...a2];
187+
188+
a3[0] === a1[0] // true
189+
a4[0] === a1[0] // true
190+
```
191+
192+
上面代码中,`a3``a4`是用两种不同方法合并而成的新数组,但是它们的成员都是对原数组成员的引用,这就是浅拷贝。如果修改了原数组的成员,会同步反映到新数组。
193+
184194
**(3)与解构赋值结合**
185195

186196
扩展运算符可以与解构赋值结合起来,用于生成数组。

0 commit comments

Comments
 (0)