跳到主要内容

JavaScript里函数参数arguments是数组吗?

参考答案:

在JavaScript中,arguments 对象是一个类数组对象,它代表传给一个函数的参数列表。它不是一个真正的数组,但具有一个 length 属性,该属性表示传递给函数的参数个数。

arguments 对象可以让你在函数中操作所有传入的参数,无论函数声明时是否定义了这些参数。由于它不是一个真正的数组,所以它没有数组的方法(如 pushpopforEach 等)。

然而,你可以使用扩展运算符(...)将 arguments 对象转换为真正的数组,然后就可以使用数组的方法了。例如:

function myFunc() {
  var args = Array.prototype.slice.call(arguments);
  // 或者使用扩展运算符
  // var args = [...arguments];
  args.forEach(function(arg) {
    console.log(arg);
  });
}

myFunc(1, 2, 3);  // 输出 1, 2, 3

在ES6及以后的版本中,你还可以使用剩余参数(rest parameters)语法来更简洁地处理函数参数:

function myFunc(...args) {
  args.forEach(function(arg) {
    console.log(arg);
  });
}

myFunc(1, 2, 3);  // 输出 1, 2, 3

在这个例子中,...args 是一个真正的数组,包含了所有传递给 myFunc 的参数。