扩展运算符(...)可展开可迭代对象,简化数组合并、复制、类数组转换及函数传参。1. 合并数组:[...arr1, ...arr2]更直观;2. 浅拷贝:[...arr]避免引用共享;3. 转类数组为数组:[...arguments]或[...NodeList];4. 替代apply:Math.max(...numbers)更简洁。仅展开一层,深层需递归。

扩展运算符(Spread Operator)是 JavaScript 中一个非常实用的语法,用三个点(...)表示,能将可迭代对象(如数组、字符串、类数组对象)展开为独立元素。在数组操作中,它极大简化了常见任务,提升代码可读性和效率。
1. 合并数组
传统方式合并数组需要使用 concat() 方法,而扩展运算符更直观简洁。
const arr1 = [1, 2, 3];const arr2 = [4, 5, 6];
const merged = [...arr1, ...arr2];
// 结果:[1, 2, 3, 4, 5, 6]
你还可以在合并时插入额外元素:
const withExtra = [...arr1, 0, ...arr2];// 结果:[1, 2, 3, 0, 4, 5, 6]
2. 复制数组(浅拷贝)
避免直接赋值导致引用共享问题,扩展运算符可快速创建新数组。
const original = [1, 2, 3];const copy = [...original];
copy.push(4);
// original 不受影响:[1, 2, 3]
// copy:[1, 2, 3, 4]
这是实现数组浅拷贝最简洁的方式之一。
3. 将类数组对象转为数组
像 arguments 或 DOM 的 NodeList 是类数组,无法直接使用数组方法。扩展运算符可轻松转换。
function example() {const args = [...arguments];
return args.map(x => x * 2);
}
example(1, 2, 3); // [2, 4, 6]
同样适用于获取所有 div 元素并转为数组:
const divs = [...document.querySelectorAll('div')];4. 替代 apply 处理函数参数
过去调用函数传入数组参数需用 apply,现在更简单。
const numbers = [2, 5, 1];const max = Math.max(...numbers);
// 结果:5
无需再写 Math.max.apply(null, numbers),代码更清晰。
基本上就这些。扩展运算符让 JS 数组操作变得更自然流畅,掌握它能显著提升编码效率。不复杂但容易忽略细节,比如它只能做一层展开,深层结构仍需递归处理。










