剩余参数(rest parameters)用...加参数名接收不定数量实参,必须位于参数列表末尾且唯一,生成真数组可直接调用map/filter等方法,支持与固定参数共存,注意区别于展开语法。

JavaScript 中用 剩余参数(Rest Parameters) 接收不确定数量的入参,语法是三个点 ... 加一个参数名,它会把函数调用时多余的实参收集为一个真正的数组。
语法写法:放在参数列表末尾
剩余参数必须是函数参数列表中的最后一个,且只能有一个:
- ✅ 正确:
function sum(...numbers) { } - ❌ 错误:
function sum(...numbers, x) { }(不能在后面再跟其他参数) - ❌ 错误:
function sum(...a, ...b) { }(不允许多个剩余参数)
它不是类数组,而是真数组
和早期的 arguments 对象不同,剩余参数是标准数组,可直接使用 map、filter、reduce 等方法:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
function joinWords(...words) {
return words.join(' '); // words 是数组,.join() 可直接用
}
joinWords('Hello', 'World', '!'); // "Hello World !"
可以和其他参数共存,但必须放最后
常见场景是固定参数 + 动态参数:
- 比如第一个参数是操作符,后面都是要处理的数值:
function calc(operator, ...nums) { ... } - 调用
calc('+', 1, 2, 3)→operator是'+',nums是[1, 2, 3]
注意和展开语法(Spread)别混淆
... 在函数定义里是“收”(剩余参数),在函数调用或字面量中是“撒”(展开):
- 定义时:
function f(...args) { }→ 收集参数 - 调用时:
f(...[1,2,3])→ 展开数组传参
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










