箭头函数不支持arguments对象但支持剩余参数(...args),剩余参数必须位于参数列表末尾且唯一,可与默认参数共存,使用时需加括号。

箭头函数本身不直接支持传统意义上的“不定参数”语法(如 function(...args)),但它可以配合剩余参数(...)来处理参数个数不固定的情况——前提是剩余参数必须放在参数列表的末尾,且只能有一个。
箭头函数支持剩余参数
剩余参数(rest parameters)允许你将多个实参收集为一个数组,而箭头函数完全兼容这一语法:
- 正确写法:剩余参数必须是最后一个形参,且用
...args形式声明 - 错误写法:剩余参数不能出现在中间或开头,也不能出现两次
- 示例:
const sum = (...nums) => nums.reduce((a, b) => a + b, 0);—— 可传任意个数字,如sum(1, 2, 3)返回6
不能使用 arguments 对象
箭头函数没有自己的 arguments 绑定,因此无法像普通函数那样通过 arguments 访问实参列表:
-
const bad = () => console.log(arguments);会报ReferenceError - 必须改用剩余参数替代,例如
(...args) => console.log(args) - 这是设计使然,因为箭头函数不创建自己的执行上下文
与默认参数共存时的注意事项
剩余参数可以和默认参数一起使用,但顺序必须严格遵守规则:
- 默认参数可出现在前面,剩余参数必须在最后
- 示例:
const greet = (name = "guest", ...hobbies) => `${name} likes ${hobbies.join(", ")}`; - 调用
greet("Alice", "reading", "coding")输出"Alice likes reading, coding" - 若把剩余参数放在默认参数前,会触发语法错误
多参数场景下的简写限制
当使用剩余参数时,箭头函数的简洁写法仍适用,但需注意结构清晰性:
- 单表达式体可省略大括号和
return,如(...items) => items.length - 若需多步逻辑,必须用大括号包裹,并显式
return - 不能省略剩余参数的括号:写成
...args => ...是非法的,必须是(...args) => ...
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











