前端/移动开发面试题更新 2026-08-05

在 JavaScript 中,函数的 arguments 对象为何是类数组而非真正的数组?请说明其结构特征,并给出至少两种遍历该类数组的方法。

前端/移动开发编码实现技术原理JavaScript

考察说明

考察对 arguments 对象本质的理解及类数组的遍历技巧。

回答思路

  1. 【回答框架 1】arguments 是函数内部可用的类数组对象,具有 length 属性和索引访问能力,但原型是 Object 而非 Array,因此不具备数组的原生方法如 forEach、map。
  2. 【回答框架 2】类数组的遍历方法:使用 Array.prototype.forEach.call(arguments, fn) 或 Array.from(arguments) 转为真数组后再遍历,也可用 for 循环按索引遍历。
  3. 【回答框架 3】ES6 箭头函数没有自己的 arguments,可用剩余参数 ...args 代替,它是真正的数组,可直接使用数组方法。
  4. 【关键点 1】arguments 有 length 和索引,但不是 Array 实例。
  5. 【关键点 2】可用 Array.from 或 Array.prototype.slice.call 转换为数组。
  6. 【关键点 3】箭头函数无 arguments,用剩余参数更优。
  7. 【易错点 1】在非严格模式下修改 arguments 会映射到命名参数,严格模式下不映射,易混淆。
  8. 【易错点 2】将 arguments 当作数组直接调用 forEach 会报错。