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

我很困惑与Node.js函数参数对象。

假设我有以下代码:

function x() { return arguments; } console.log(x(1, 2, 3)); 

在Chrome开发者工具中,它以Array的forms返回:

 [1, 2, 3] 

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

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

怎么来的?

arguments是一个魔术variables,实际上并不是一个数组。 它的行为就像一个数组,但它并不具有数组所具有的所有function。

像这样的其他对象是例如NodeList

您会看到不同于Chrome中arrays的对象的不同表示,既不在Node中,也不在javascript中。

如果你想要一个数组,你可以这样做:

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

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