JavaScript展开运算符(...)是ES6引入的解构工具,用于在数组字面量、对象字面量或函数调用中将可迭代对象摊开为独立元素,支持合并数组/对象、函数传参、浅拷贝及字符串转数组等场景。
JavaScript 展开运算符(...)是 ES6 引入的语法,作用是把一个可迭代对象(比如数组、字符串、对象、Set、Map 等)“摊开”成独立的元素。它不是万能的魔法符号,而是一个明确的解构工具——只在特定上下文中生效,比如数组字面量 []、对象字面量 {} 或函数调用 () 中。
这是最直观的用途。不用再写 concat() 或手动遍历拼接:
const newArr = [...arr1, ...arr2];
const result = [...arr1, 'new', ...arr2];
const newObj = { ...obj1, ...obj2 }; 后者属性会覆盖前者同名属性const updated = { ...user, age: 27 };
当参数已经在一个数组里,直接展开就能按位置传入:
Math.max(...[1, 5, 3]); // 5,替代 Math.max.apply(null, arr)
console.log(...['a', 'b']); // a bfunc(1, ...middleArgs, 10);
快速创建新引用,避免意外修改原数据(注意:只拷贝第一层):
const copy = [...originalArr];
const copy = { ...originalObj };
它还能处理一些看似不相关但很常见的需求:
[...'hello'] → ['h','e','l','l','o']
[...document.querySelectorAll('p')],之后可用 map、filter 等push 中批量添加:arr1.push(...arr2);
const [first, ...rest] = [1,2,3,4];