箭头函数没有 arguments 对象,因其不绑定 arguments、this、super 或 new.target,需用 Rest 参数(...args)替代;Rest 参数是真数组,支持 map/filter/reduce 等方法,长度准确且可解构展开。

箭头函数本身没有 arguments 对象,所以不能直接访问它。但你可以用 Rest 参数(...args)来替代 arguments 的功能,而且更清晰、更符合现代 JavaScript 习惯。
为什么箭头函数没有 arguments
因为箭头函数不绑定自己的 arguments、this、super 或 new.target,它会沿作用域链向上查找这些值。这意味着在箭头函数内部写 arguments,实际引用的是外层普通函数的 arguments(如果存在),否则报错。
用 Rest 参数代替 arguments
Rest 参数语法 ...args 会把所有剩余实参收集为一个真正的数组,比类数组的 arguments 更好操作:
- 可以直接调用
.map()、.filter()、.reduce()等数组方法 - 长度准确(
arguments.length有时不可靠,比如与setter冲突时) - 支持解构、展开(
[...args])、默认值等现代特性
典型替代写法对比
传统函数中用 arguments:
function sum() {
return Array.from(arguments).reduce((a, b) => a + b, 0);
}
改用箭头函数 + Rest 参数:
将后端 Java 接口文档转换为前端 TypeScript 类型定义(interface / type)。输入:飞书文档、Spring Boot 接口文档、Swagger/OpenAPI、手写 API 文档等。输出:包含请求参数与响应结果的 .md 文件,含完整 JSDoc 注释。触发关键词:Java 转 TS、接口转换、生成前端类型、接口文档转 TypeScript、DTO/VO/BO 转 interface、后端文档转前端类型、生成接口类型、类型定义生成。
const sum = (...args) => args.reduce((a, b) => a + b, 0);
注意:如果需要兼容“无参数”或“单参数”场景,args 始终是数组(哪怕为空),不会出错;而 arguments 在严格模式下对箭头函数根本不可用。
需要访问原始调用信息?考虑包装一层
极少数情况(如写工具函数需透传所有参数给另一个函数),你仍可用 Rest 参数展开:
const delegate = (...args) => targetFunction(...args);
// 等价于 function delegate() { return targetFunction.apply(this, arguments); }
不需要 apply 或 arguments,用 ...args 更简洁安全。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










