剩余参数语法(rest parameters)用于在函数定义中表示接受不定数量参数,并把他们封装成一个数组。在函数内部,可以使用剩余参数来操作参数数组,例如进行遍历、转换等操作。
示例:function myFunction(...args){....}
export default function sum(...args) {
return args.reduce((p, c) => p + c, 0);
}
扩展运算符(spread operator)用于在函数调用或数组/对象字面量中展开数组或对象。它可以将一个数组或对象展开成多个独立的值。在函数调用中,扩展运算符可以用来传递数组中的值作为函数的参数。
示例:
- 函数调用中:myFunction(...args)
- 数组字面量:const newArray = [...oldArray]
- 对象字面量:const newObj = {...oldObj}
尽管他们在语法上相似(都是用...),但它们的作用和使用场景是不用的。剩余参数用于接收函数的多个参数并封装成数组,而扩展运算符则是将数组或对象展开成独立的值。
// 1.数组合并
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const mergedArray = [...arr1, ...arr2];
console.log(mergedArray); // 输出 [1, 2, 3, 4, 5, 6]
// 2.函数参数传递
function myFunction(a, b, c) {
console.log(a + b + c);
}
const args = [1, 2, 3];
myFunction(...args); // 输出 6
// 3.数组复制
const originalArray = [1, 2, 3];
const copiedArray = [...originalArray];
console.log(copiedArray); // 输出 [1, 2, 3]
// 4.对象合并
const obj1 = { name: 'Alice', age: 30 };
const obj2 = { city: 'New York', country: 'USA' };
const mergedObject = { ...obj1, ...obj2 };
console.log(mergedObject);
// 输出 { name: 'Alice', age: 30, city: 'New York', country: 'USA' }