在 JavaScript 中,… 是扩展运算符(spread operator)和剩余参数运算符(rest parameter)的语法(语法糖)。下面我会分别介绍它们的用法:
一、扩展运算符(Spread Operator)
扩展运算符 (…) 允许一个表达式在函数调用或数组/对象字面量构造时扩展为多个参数或元素。
- 在函数调用中使用:
function sum(a, b, c) {
return a + b + c;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers)); // 输出 6
在这个例子中,...numbers 将数组 numbers 中的元素展开为函数 sum 的参数。
- 在数组字面量中使用:
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const combinedArray = [...arr1, ...arr2];
console.log(combinedArray); // 输出 [1, 2, 3, 4, 5, 6]
在这个例子中,...arr1 和 ...arr2 将两个数组的元素展开并合并到一个新数组中。
- 在对象字面量中使用(从 ES9/ES2018 开始):
const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const combinedObject = { ...obj1, ...obj2 };
console.log(combinedObject); // 输出 { a: 1, b: 2, c: 3, d: 4 }
在这个例子中,...obj1 和 ...obj2 将两个对象的属性展开并合并到一个新对象中。
二、剩余参数运算符(Rest Parameter)
剩余参数运算符 (…) 允许将不定数量的参数表示为一个数组。
function sum(...args) {
return args.reduce((total, current) => total + current, 0);
}
console.log(sum(1, 2, 3)); // 输出 6
console.log(sum(1, 2, 3, 4, 5)); // 输出 15
在这个例子中,...args 将函数 sum 的所有参数收集到一个数组中。