昨天在我的JavaScript课程教学中,我和我的学生们发现了一些有趣的功能,我认为这些功能可能值得在一个问题中找到并且我已经找到了答案。
在Chrome控制台中用chrome键入Array.length
会返回1
。
同样,Function.length
会返回1
。这很重要,因为:
JavaScript中的每个函数实际上都是一个Function对象。 (MDN JS Ref: Function)
因此,Object.length
可能所有其他本机对象将返回1
作为length
属性的值。
那么,最后为什么会发生这种行为?
答案 0 :(得分:9)
Function.length
本身就是答案:
指定函数预期的参数数量。 MDN JS Ref: Function.length
当我们写Function.length
时,我们要求Function
构造函数告诉我们正式命名参数的数量(“可选” - 即非正式 - 参数通过{{1}访问函数体中的属性)。因为arguments
构造函数只需要1个正式命名参数,所以结果为Function
:
1
new Function ([arg1[, arg2[, ... argN]],] functionBody)
是单个正式命名参数。因此functionBody
为Function.length
。