JavaScript中,...(三个点)是扩展运算符
在JavaScript中,...
(三个点)是扩展运算符(Spread Operator)和剩余参数(Rest Parameters)的语法。它确实可以用来“展开”对象的属性或数组的元素。
展开对象的属性
对于对象,扩展运算符可以用来将一个对象的所有可枚举属性复制到新对象中,或者与现有的对象属性合并。
javascript复制代码
const obj1 = { a: 1, b: 2 }; | |
const obj2 = { ...obj1, c: 3 }; | |
console.log(obj2); // { a: 1, b: 2, c: 3 } |
在这个例子中,...obj1
将 obj1
的所有属性展开,并将它们与 obj2
的新属性 c
合并。
展开数组的元素
对于数组,扩展运算符可以用来将数组的元素展开到新的数组或其他上下文中。
javascript复制代码
const arr1 = [1, 2, 3]; | |
const arr2 = [...arr1, 4, 5]; | |
console.log(arr2); // [1, 2, 3, 4, 5] |
在这个例子中,...arr1
将 arr1
的所有元素展开,并将它们与新的元素 4
和 5
组合成新的数组 arr2
。
剩余参数
在函数定义中,...
也可以作为剩余参数来使用,允许你将不定数量的参数作为数组来处理。
javascript复制代码
function sum(...numbers) { | |
return numbers.reduce((total, num) => total + num, 0); | |
} | |
console.log(sum(1, 2, 3, 4)); // 10 |
在这个例子中,...numbers
允许 sum
函数接收任意数量的参数,并将它们作为数组 numbers
来处理。
需要注意的是,扩展运算符只能用于可迭代的对象,如数组和对象(对象的属性必须是可枚举的)。对于其他类型的值(如原始类型或函数),扩展运算符将不会按预期工作。