我对 Node.js 函数参数对象感到困惑。
假设我有以下代码:
function x() {
return arguments;
}
console.log(x(1, 2, 3));
在 chrome 开发人员工具中,它以数组形式返回:
[1, 2, 3]
但是我在 node.js 中得到了不同的结果:
{ '0': 1, '1': 2, '2': 3 }
怎么会?
我对 Node.js 函数参数对象感到困惑。
假设我有以下代码:
function x() {
return arguments;
}
console.log(x(1, 2, 3));
在 chrome 开发人员工具中,它以数组形式返回:
[1, 2, 3]
但是我在 node.js 中得到了不同的结果:
{ '0': 1, '1': 2, '2': 3 }
怎么会?
您会看到在 Chrome 中既不是在 Node 中也不是在一般的 javascript 中的数组的对象的不同表示形式。
如果你想要一个数组,你可以这样做:
var args = Array.prototype.slice.call(arguments, 0);
arguments
是一个实际上不是数组的魔法变量。它的行为类似于 Array,但它没有 Array 所具有的所有功能。
例如,像这样的其他对象NodeList
。
console.log 不是 javascript 的一部分,也不是 v8 的一部分。这就是为什么 chrome 和 node.js 都有自己的 console.log 实现。他们有类似的api,但不一样。节点的 console.log 的文档在这里:http ://nodejs.org/api/stdio.html