为什么Javascript函数`arguments`不是node.js中的Array实例?

10 javascript v8 node.js

最近查看了很多NodeJS和Javascript代码,似乎参数不是Array的一个实例,但仍然表现得像一个,所以人们会做类似的东西,Array.prototype.slice.call(arguments, ...)或者[].slice.call(arguments)增加冗长,增加了新手理解等等的障碍.是否有原因参数不是Array的一个实例,或者这只是那些不好的部分?

Jac*_*kin 28

.arguments是一个独立的对象,恰好有一个length属性和[]用于索引它的能力.但除此之外,它只是一个对象,而不是一个Array对象.

是的,这确实是JavaScript的一个不好的部分.

  • 也不要分配给`arguments [0]`等,因为`arguments [0]`是*与你的第一个形式参数完全相同的东西*,改变其中一个,也会改变另一个. (2认同)
  • 明确地说,这不是Node.js特有的.它在JavaScript规范中. (2认同)