1. 第一个叫做 展开运算符(spread operator),作用是和字面意思一样,就是把东西展开。可以用在array和object上都行。
1let a = [1,2,3]; 2let b = [0, ...a, 4]; // [0,1,2,3,4] 3 4let obj = { a: 1, b: 2 }; 5let obj2 = { ...obj, c: 3 }; // { a:1, b:2, c:3 } 6let obj3 = { ...obj, a: 3 }; // { a:3, b:2 }
2. 第二个 剩余操作符(rest operator),是解构的一种,意思就是把剩余的东西放到一个array里面赋值给它。
1let a = [1,2,3]; 2let [b, ...c] = a; 3b; // 1 4c; // [2,3] 5 6// 也可以 7let a = [1,2,3]; 8let [b, ...[c,d,e]] = a; 9b; // 1 10c; // 2 11d; // 3 12e; // undefined 13 14// 也可以 15function test(a, ...rest){ 16 console.log(a); // 1 17 console.log(rest); // [2,3] 18} 19test(1,2,3) 20 21let array = [1, 2, 3, 4, 5]; 22const [ x, y, ...z ] = array; 23// 其中z=[3, 4, 5],注意如果由于array的length不足以完成析构,则会导致z为[] 24对象: 25let obj = { name: 'zhangsan', age: 30, city: 'shenzhen' }; 26const {name, ...others} = obj; 27console.log(name); // 'zhangsan' 28console.log(others); // {age: 30, city: 'shenzhen'}