函数Node.js中的Arguments对象与Chrome的JavaScript不同

时间:2013-03-29 14:56:36

标签: javascript node.js function

我对Node.js函数参数对象感到困惑。

假设我有以下代码:

function x() {
  return arguments;
}

console.log(x(1, 2, 3));

在Chrome开发人员工具中,它以数组形式返回:

[1, 2, 3]

但是我在node.js中得到了不同的结果:

{ '0': 1, '1': 2, '2': 3 }

怎么回事?

3 个答案:

答案 0 :(得分:6)

你会看到一个对象的不同表示形式,它在Chrome中既不是在Node中也不是在javascript中。

如果你想要一个阵列,你可以这样做:

var args = Array.prototype.slice.call(arguments, 0);

答案 1 :(得分:5)

arguments是一个神奇的变量,实际上并不是一个数组。它的行为类似于Array,但它没有Array所具有的所有功能。

此类其他对象例如NodeList

答案 2 :(得分:2)

console.log不是javascript的一部分,也不是v8的一部分。这就是为什么chrome和node.js都有自己的console.log实现。他们有类似的api,但不一样。节点的console.log文档位于:http://nodejs.org/api/stdio.html