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
実際には配列ではない魔法の変数です。配列のように動作しますが、配列が持つすべての機能を持っているわけではありません。
このような他のオブジェクトはNodeList
、たとえばです。