【问题标题】:Arguments Object is turning my array into a list? javascript参数对象正在将我的数组变成一个列表? javascript
【发布时间】:2016-02-11 19:45:47
【问题描述】:

有谁知道为什么在函数内部使用 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, …}]

【问题讨论】:

标签: javascript arrays list object arguments


【解决方案1】:

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

intToArray(1, 2, ...)

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

intToArray(arguments);

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

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

如果您想传递一个长的所有参数,请参阅Passing arguments forward to another javascript function

【讨论】:

  • 函数不接受输入参数,因此传递给它们的内容无关紧要。
  • @Jaco:无论形式参数如何,您都可以向 JavaScript 中的函数传递尽可能多或尽可能少的参数。简化示例:function foo() { alert(arguments[0]); }; foo('hello');arguments 是每个函数中的一个特殊变量,它是所有传递的参数的集合(尽管有!)。请参阅developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 了解更多信息。
  • 知道了。谢谢菲利克斯!
猜你喜欢
  • 1970-01-01
  • 2016-11-12
  • 2018-11-17
  • 1970-01-01
  • 2017-11-19
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
相关资源
最近更新 更多