7

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

假设我有以下代码:

function x() {
  return arguments;
}

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

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

[1, 2, 3]

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

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

怎么会?

4

3 回答 3

6

您会看到在 Chrome 中既不是在 Node 中也不是在一般的 javascript 中的数组的对象的不同表示形式。

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

var args = Array.prototype.slice.call(arguments, 0);
于 2013-03-29T15:08:35.393 回答
5

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

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

于 2013-03-29T15:01:01.560 回答
2

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

于 2013-03-29T15:03:41.353 回答