[英]How to override Function.length to return the length of an array, in strict mode
[英]Why does `Array.length`, `Function.length`, `String.length`, etc return 1?
在昨天教我的JavaScript课程时,我和我的学生遇到了一些有趣的功能,我认为这些功能值得在一个问题和我得到的答案中捕获。
在chrome控制台Array.length
chrome输入Array.length
返回1
。
同样, Function.length
返回1
。 这很重要,因为:
JavaScript中的每个函数实际上都是一个Function对象。 (MDN JS参考:功能)
因此, Object.length
和可能所有其他本机对象将返回1
作为length
属性的值。
那么,最后为什么会发生这种行为呢?
Function.length
本身就是答案:
指定函数所需的参数数。 MDN JS Ref:Function.length
当我们编写Function.length
我们要求Function
构造Function
告诉我们正式命名参数的数量(“可选” - 即非正式 - 参数通过函数体中的arguments
属性访问)。 因为Function
构造Function
正好需要1个正式命名参数,所以结果为1
:
new Function ([arg1[, arg2[, ... argN]],] functionBody)
functionBody
是单个正式命名参数。 因此Function.length
为1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.