该记录源于segmentfaul网友的评论,特地感谢!html
...运算符用于操做数组,有两种层面数组
1. 第一个叫作 展开运算符(spread operator),做用是和字面意思同样,就是把东西展开。能够用在array和object上都行。
好比:spa
- let a = [1,2,3];
- let b = [0, ...a, 4]; // [0,1,2,3,4]
-
- let obj = { a: 1, b: 2 };
- let obj2 = { ...obj, c: 3 }; // { a:1, b:2, c:3 }
- let obj3 = { ...obj, a: 3 }; // { a:3, b:2 }
2. 第二个,第三个叫作 剩余操做符(rest operator),是解构的一种,意思就是把剩余的东西放到一个array里面赋值给它。通常只针对array的解构,其余的没见过。。。
好比: .net
- let a = [1,2,3];
- let [b, ...c] = a;
- b; // 1
- c; // [2,3]
-
- // 也能够
- let a = [1,2,3];
- let [b, ...[c,d,e]] = a;
- b; // 1
- c; // 2
- d; // 3
- e; // undefined
-
- // 也能够
- function test(a, ...rest){
- console.log(a); // 1
- console.log(rest); // [2,3]
- }
-
- test(1,2,3)
还有相似的rest
- let array = [1, 2, 3, 4, 5];
- const { x, y, ...z } = array;
- // 其中z=[3, 4, 5],注意若是因为array的length不足以完成析构,则会致使z为[]
- 对象:
- let obj = { name: 'zhangsan', age: 30, city: 'shenzhen' };
- const {name, ...others} = obj;
- console.log(name); // 'zhangsan'
- console.log(others); // {age: 30, city: 'shenzhen'}
- 转:https://blog.csdn.net/chauncywu/article/details/73060918