欢迎来到我的博客文章!所有文章都是满满的前端干货,文章简明扼要。
它的核心作用是将可迭代对象(如数组、字符串、Set、Map 等)"展开"为单个元素,或将对象的自有可枚举属性"展开"为键值对。
替代 arr1.concat(arr2)
替代 original.slice() 或 Array.from(original)
可用于 arguments、NodeList 等
替代 Math.max.apply(null, numbers)
替代 Object.assign
它们语法相同(...)但用途相反:
| 特性 | 扩展运算符(Spread) | 剩余参数(Rest) |
|---|---|---|
| 位置 | 函数调用、数组/对象字面量中 | 函数参数列表最后 |
| 作用 | 展开 可迭代对象 | 收集 多余参数为数组 |
| 场景 | 代码示例 |
|---|---|
| React 更新状态 | setItems([...items, newItem]) |
| Redux reducer | return {...state, count: state.count + 1} |
| 去重数组 | [...new Set([1, 2, 2, 3])] |
| 连接多个数组 | const all = [...arr1, ...arr2, ...arr3] |