JavaScript扩展运算符(...)用于将可迭代对象展开为独立元素,支持数组合并与插入、浅拷贝、类数组转换、函数传参及对象属性合并,实现更直观可控的数据处理。

JavaScript 的扩展运算符(...)用于把可迭代对象(如数组、字符串、对象、Set、Map)“打散”成独立的元素,常出现在数组字面量、对象字面量或函数调用中。它不是语法糖,而是改变了处理数据的方式——让展开动作更直观、更可控。
合并数组和插入新元素
用 ... 可以把多个数组展开后组合成一个新数组,还能在任意位置插入值。
const a = [1, 2]; const b = [3, 4]; const c = [...a, 0, ...b]; // [1, 2, 0, 3, 4]- 比
concat()更灵活:支持中间插入、重复展开、混入字面量值 - 不会修改原数组,返回全新数组
浅拷贝数组与类数组转换
扩展运算符能快速复制数组(仅第一层),也适用于将类数组对象转为真数组。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
const original = [1, 2, 3]; const copy = [...original];—— 修改copy不影响original -
const nodeList = document.querySelectorAll('div'); const arr = [...nodeList];—— 支持直接展开 DOM 集合(现代环境) - 注意:嵌套数组或对象仍共享引用,属于浅拷贝
函数调用传参
把数组“摊开”成独立参数,替代老旧的 apply() 写法。
立即学习“Java免费学习笔记(深入)”;
-
Math.max(...[1, 5, 3]); // 5(Math.max([1, 5, 3])会返回NaN) function greet(a, b, c) { console.log(a + b + c); } greet(...['Hi', ', ', 'World']); // "Hi, World"- 适合动态参数场景,比如从 API 获取参数列表后调用工具函数
对象展开与属性合并
ES2018 起支持对象使用 ...,用于浅合并、覆盖更新或构造副本。
-
const user = { name: 'Alice', age: 30 }; const updated = { ...user, city: 'Beijing' };→{ name: 'Alice', age: 30, city: 'Beijing' } - 同名属性后者覆盖前者:
{ ...obj1, ...obj2 }中obj2的键优先 - 只复制自身可枚举属性,不处理原型链、Symbol 键或 getter

















