ES6 引入了 Rest 参数和 Spread 语法,它们为函数参数处理和数组/对象操作提供了更灵活的方式,让我们可以更方便地处理可变数量的参数和数据结构。
1. Rest 参数
Rest 参数使用三个点 ...
后跟一个参数名来表示,它可以将函数调用中剩余的所有参数收集到一个数组中。
语法:
function myFunction(a, b, ...rest) {
// rest 是一个数组,包含所有剩余的参数
console.log(rest);
}
示例:
function sum(a, b, ...rest) {
let total = a + b;
for (let i = 0; i < rest.length; i++) {
total += rest[i];
}
return total;
}
console.log(sum(1, 2, 3, 4, 5)); // 输出:15
特点:
- Rest 参数必须放在参数列表的最后。
- 一个函数中只能有一个 Rest 参数。
- Rest 参数可以与其他参数一起使用。
应用场景:
- 处理可变数量的参数:当函数需要接收任意数量的参数时,可以使用 Rest 参数来收集所有剩余的参数。
- 从数组中提取数据:可以使用 Rest 参数将数组中的元素作为参数传递给函数。
2. Spread 语法
Spread 语法也使用三个点 ...
,但它用于将一个可迭代对象(例如数组或字符串)展开成多个独立的值。
语法:
let arr = [1, 2, 3];
let newArr = [...arr, 4, 5]; // 将 arr 的元素展开到 newArr 中
示例:
// 合并数组
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let arr3 = [...arr1, ...arr2]; // 输出:[1, 2, 3, 4, 5, 6]
// 复制数组
let arr4 = [...arr1]; // 输出:[1, 2, 3]
// 将数组作为参数传递给函数
function sum(a, b, c) {
return a + b + c;
}
let arr5 = [1, 2, 3];
let result = sum(...arr5); // 输出:6
// 合并对象
let obj1 = { name: 'John', age: 30 };
let obj2 = { city: 'New York' };
let obj3 = { ...obj1, ...obj2 }; // 输出:{ name: 'John', age: 30, city: 'New York' }
特点:
- Spread 语法可以用于数组、字符串、对象等可迭代对象。
- Spread 语法可以用于函数调用、数组创建、对象创建等场景。
应用场景:
- 合并数组和对象:可以使用 Spread 语法将多个数组或对象合并成一个新的数组或对象。
- 复制数组和对象:可以使用 Spread 语法创建数组或对象的副本。
- 将数组或对象作为参数传递给函数:可以使用 Spread 语法将数组或对象的元素作为参数传递给函数。
总结
Rest 参数和 Spread 语法是 ES6 中非常强大的工具,它们可以简化代码,提高代码可读性,并为我们提供更灵活的方式来处理数据结构。
求个点赞!!!