我对Node.js函数参数对象感到困惑。
假设我有以下代码:
function x() {
return arguments;
}
console.log(x(1, 2, 3));
在Chrome开发人员工具中,它以数组形式返回:
[1, 2, 3]
但是我在node.js中得到了不同的结果:
{ '0': 1, '1': 2, '2': 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