推荐答案
展开运算符 (...
) 是 ECMAScript 6 (ES6) 引入的一个语法特性,它允许将一个可迭代对象(如数组、字符串等)在函数调用或数组构造时展开为单个元素。展开运算符的主要用途包括:
- 函数调用时展开数组:将数组的元素作为单独的参数传递给函数。
- 数组字面量中展开数组:将数组的元素插入到另一个数组中。
- 对象字面量中展开对象:将对象的属性复制到另一个对象中。
本题详细解读
1. 函数调用时展开数组
在函数调用时,展开运算符可以将数组的元素作为单独的参数传递给函数。例如:
function sum(a, b, c) { return a + b + c; } const numbers = [1, 2, 3]; console.log(sum(...numbers)); // 输出: 6
在这个例子中,...numbers
将数组 [1, 2, 3]
展开为 1, 2, 3
,然后作为参数传递给 sum
函数。
2. 数组字面量中展开数组
在数组字面量中,展开运算符可以将一个数组的元素插入到另一个数组中。例如:
const arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; const combined = [...arr1, ...arr2]; console.log(combined); // 输出: [1, 2, 3, 4, 5, 6]
在这个例子中,...arr1
和 ...arr2
将两个数组的元素展开并合并到一个新的数组中。
3. 对象字面量中展开对象
在对象字面量中,展开运算符可以将一个对象的属性复制到另一个对象中。例如:
const obj1 = { a: 1, b: 2 }; const obj2 = { c: 3, ...obj1 }; console.log(obj2); // 输出: { c: 3, a: 1, b: 2 }
在这个例子中,...obj1
将 obj1
的属性展开并复制到 obj2
中。
4. 注意事项
- 展开运算符只能用于可迭代对象(如数组、字符串等)和对象。
- 在对象字面量中使用展开运算符时,如果存在同名属性,后面的属性会覆盖前面的属性。
const obj1 = { a: 1, b: 2 }; const obj2 = { b: 3, ...obj1 }; console.log(obj2); // 输出: { b: 2, a: 1 }
在这个例子中,obj1
的 b
属性覆盖了 obj2
的 b
属性。