有谁知道为什么在函数内部使用console.log返回列表而不是预期的数组?

function intToArray() {
  var array = [];
  for (var i = 0; i < arguments.length; i++)
    array.push(arguments[i]);
  return array;
}

function printArray() {
  console.log(intToArray(arguments));
}

console.log(intToArray(1,2,3,3,4,4,5,6,7,8,8,9));
// [1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 8, 9]

printArray(1,2,3,3,4,4,5,6,7,8,8,9);
// [0:  {0: 1, 1: 2, 2: 3, 3: 3, 4: 4, 5: 4, …}]

最佳答案

在第一种情况下,您将多个参数传递给intToArray

intToArray(1, 2, ...)


在第二种情况下,您传递一个参数:

intToArray(arguments);


这更等同于intToArray([1,2,3])

在这两种情况下,都将打印一个数组,但元素数量不同。

如果要传递所有参数,请参见Passing arguments forward to another javascript function

09-10 03:57