箭头函数不支持arguments,必须用rest参数(...args)接收不定参,且rest必须位于形参末尾、生成真数组可直接调用数组方法,空调用时为[]而非undefined。

箭头函数本身不支持 arguments,但可以自然地配合 rest 参数(...args)接收不定数量的实参,且生成的是真正的数组,可直接调用 .map()、.reduce() 等方法。
rest 参数必须放在形参末尾
在箭头函数中使用 rest 参数时,它必须是最后一个参数,不能后面再跟其他具名参数。
- ✅ 正确:
const sum = (...nums) => nums.reduce((a, b) => a + b, 0); - ❌ 错误:
const sum = (a, ...nums, b) => {...}(语法报错) - ✅ 允许混用具名参数 + rest:
const logWithPrefix = (prefix, ...msgs) => console.log(`[${prefix}]`, ...msgs);
rest 参数是真数组,不是类数组
与传统函数里的 arguments 不同,rest 参数直接就是 Array 实例,无需转换就能用所有数组方法。
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
-
console.log(...msgs)可直接展开输出 -
msgs.filter(Boolean)、msgs.map(String)都能直接调用 - 箭头函数里无法访问
arguments,rest 是唯一标准方式
调用时传参方式灵活
rest 参数接收的是“多出来的”实参,空调用时它为空数组,不会是 undefined。
-
sum(1, 2, 3)→nums是[1, 2, 3] -
sum()→nums是[](不是undefined) -
logWithPrefix('INFO', 'user login', 200, true)→msgs是['user login', 200, true]
注意 this 和参数绑定的静态性
箭头函数没有自己的 this,rest 参数也不影响这一点。它只是收集参数,不改变作用域行为。
- 适合写工具函数、事件回调、高阶函数等场景
- 避免在需要动态
this的对象方法中误用(比如对象内定义的箭头方法无法通过call改变this) - rest 参数和箭头函数结合,让函数签名更简洁、语义更清晰










