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