es6的...是展开运算符,可以将一个数组或对象展开成单个元素,也可以将多个元素合并成一个数组或对象。
在函数调用时,可以将数组或对象作为参数传递给函数,也可以将数组或对象展开成单个元素传递给函数。
在对象字面量中,可以使用展开运算符将一个对象的属性和方法复制到另一个对象中。
...
有以下4种用法
- 扩展运算符:可以将一个数组或对象展开成多个元素,扩展运算符只能用于可迭代对象(如数组、字符串、Set、Map等),比如:
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = [...arr1, ...arr2]; // [1, 2, 3, 4, 5, 6]
const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const obj3 = { ...obj1, ...obj2 }; // { a: 1, b: 2, c: 3, d: 4 }
- 剩余参数:可以将多个参数合并成一个数组,剩余参数只能用于函数参数列表中,比如:
function sum(...args) {
return args.reduce((acc, cur) => acc + cur, 0);
}
sum(1, 2, 3); // 6
sum(4, 5, 6, 7); // 22
- 对象解构赋值:可以从一个对象中提取出多个属性,比如:
const obj = { a: 1, b: 2, c: 3 };
const { a, ...rest } = obj;
console.log(a); // 1
console.log(rest); // { b: 2, c: 3 }
- 数组解构赋值:可以从一个数组中提取出多个元素,比如:
const arr = [1, 2, 3, 4, 5];
const [first, second, ...rest] = arr;
console.log(first); // 1
console.log(second); // 2
console.log(rest); // [3, 4, 5]
网友评论