为什么`Array.length`,`Function.length`,`String.length`等返回1?

时间:2012-10-30 20:45:49

标签: javascript

昨天在我的JavaScript课程教学中,我和我的学生们发现了一些有趣的功能,我认为这些功能可能值得在一个问题中找到并且我已经找到了答案。

在Chrome控制台中用chrome键入Array.length会返回1

同样,Function.length会返回1。这很重要,因为:

  

JavaScript中的每个函数实际上都是一个Function对象。 (MDN JS Ref: Function)

因此,Object.length可能所有其他本机对象将返回1作为length属性的值。

那么,最后为什么会发生这种行为?

1 个答案:

答案 0 :(得分:9)

Function.length本身就是答案:

  

指定函数预期的参数数量。 MDN JS Ref: Function.length

当我们写Function.length时,我们要求Function构造函数告诉我们正式命名参数的数量(“可选” - 即非正式 - 参数通过{{1}访问函数体中的属性)。因为arguments构造函数只需要1个正式命名参数,所以结果为Function

1

new Function ([arg1[, arg2[, ... argN]],] functionBody) 是单个正式命名参数。因此functionBodyFunction.length