arguments 是函数内部自动存在的类数组对象,保存所有实参,有 length 属性和数字索引但无数组方法,仅存在于普通函数中,可通过 arguments[i] 和 arguments.length 访问元素与个数。

JavaScript 中的 arguments 是一个函数内部自动存在的类数组对象,它保存了调用该函数时传入的所有实参,即使参数没在函数定义中显式声明,也能通过 arguments 访问到。
arguments 是什么?
arguments 不是真正的数组,而是一个“伪数组”(类数组对象):它有 length 属性、可通过数字索引(如 arguments[0])访问元素,但没有数组方法(如 map、forEach、slice 等)。它只存在于普通函数(非箭头函数)的执行上下文中。
怎么获取和使用 arguments
- 直接用
arguments[i]获取第 i+1 个参数,例如arguments[0]是第一个实参 - 用
arguments.length获取实际传入的参数个数(可能多于或少于形参个数) - 可遍历:
for (let i = 0; i
- 注意:箭头函数中没有
arguments,会沿作用域链向上查找,通常报错或取外层的值
把 arguments 转成真数组
因为不能直接调用数组方法,常需转换。常用方式有:
-
Array.prototype.slice.call(arguments)(ES5 常用) -
[].slice.call(arguments)(简写,原理相同) -
Array.from(arguments)(ES6+,推荐,语义清晰) -
[...arguments](扩展运算符,仅适用于可迭代对象;arguments在 ES6+ 中已默认可迭代,可用)
现代替代方案(推荐优先使用)
ES6 引入了剩余参数(...),语法更简洁、类型更明确,且本身就是真数组:
-
function fn(...args) { console.log(args); }——args是标准数组 - 剩余参数必须是最后一个形参,且不与
arguments共存(函数内若用了...,arguments仍存在但不建议混用) - 对大多数新项目,应优先用剩余参数代替
arguments
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











