扩展运算符(spread operator)和剩余参数(rest parameter)都使用三个点(…)表示,但它们的用途和作用是不同的。
扩展运算符用于将一个数组或类数组对象展开为一系列用逗号分隔的值。它常用于函数调用、数组字面量和解构赋值等场合。例如:
let arr = [1, 2, 3];
console.log(...arr); // 1 2 3
let arr1 = [4, 5, 6];
let arr2 = [...arr, ...arr1]; // [1, 2, 3, 4, 5, 6]
let [x, ...y] = arr; // x = 1, y = [2, 3]
剩余参数用于将函数的多余参数收集到一个数组中。它只能用在函数参数列表的最后一个位置。例如:
function sum(...args) {
let result = 0;
for (let arg of args) {
result += arg;
}
return result;
}
console.log(sum(1, 2, 3)); // 6
总之,扩展运算符和剩余参数都使用三个点(…)表示,但它们的作用是相反的:扩展运算符将一个数组展开为一系列值,而剩余参数将多余的参数收集到一个数组中。