展开运算符(…)用于将可迭代对象或对象展开为独立元素,实现数组/对象合并、浅拷贝、函数传参等,不修改原数据,仅浅层展开。

展开运算符(Spread operator)是 javaScript 中用三个点 … 表示的语法,它能把可迭代对象(如数组、字符串)或类数组对象“展开”成独立的元素,也能把对象的属性逐个取出。它不改变原数据,而是生成新数组或新对象,常用于合并、复制、解构等场景。
用展开运算符合并数组
可以把多个数组“摊开”,再用方括号组合成一个新数组,顺序按书写顺序排列。
例如:
const arr1 = [1, 2]; const arr2 = [3, 4]; const merged = [...arr1, ...arr2]; // [1, 2, 3, 4]
- 支持多个数组同时展开:
[...a, ...b, ...c] - 可以混入字面量值:
[...arr1, 99, ...arr2]→[1, 2, 99, 3, 4] - 不会修改原数组,
arr1和arr2保持不变
用展开运算符合并对象
对象展开会把每个自有可枚举属性(不含原型链上的)提取出来,按顺序合并到新对象中。若属性名重复,后面的对象会覆盖前面的。
立即学习“Java免费学习笔记(深入)”;
例如:
const obj1 = { a: 1, b: 2 }; const obj2 = { b: 3, c: 4 }; const merged = { ...obj1, ...obj2 }; // { a: 1, b: 3, c: 4 }
- 合并时属性顺序由展开顺序决定,后出现的同名属性会覆盖前面的
- 只做一层浅拷贝,嵌套对象仍共享引用
- 可与字面量混合:
{ ...obj1, d: 5, ...obj2 }
其他常见用途
展开运算符不仅用于合并,还常用在函数调用、数组解构、浅拷贝等地方。
- 传参:代替
apply——math.max(...numbers) - 浅拷贝数组:
const copy = [...original] - 浅拷贝对象:
const copy = { ...original } - 配合解构使用:
const [first, ...rest] = arr(提取首项,剩余组成新数组)
基本上就这些。展开运算符写法简洁、语义清晰,是现代 js 开发中非常实用的基础语法。注意它只处理一层结构,深层嵌套需配合其他方法处理。