Function.length

length 属性指明函数的形参个数。

Function.length 属性的属性特性:
writable false
enumerable false
configurable true

描述

length 是函数对象的一个属性值,指该函数有多少个必须要传入的参数,即形参的个数。

形参的数量不包括剩余参数个数,仅包括第一个具有默认值之前的参数个数。

与之对比的是,  arguments.length 是函数被调用时实际传参的个数。

Function 构造器的属性

Function 构造器本身也是个Function。他的 length 属性值为 1 。该属性 Writable: false, Enumerable: false, Configurable: true.

Function.prototype 对象的属性

 Function.prototype  对象的 length 属性值为 0 。

示例

console.log(Function.length); /* 1 */

console.log((function()        {}).length); /* 0 */
console.log((function(a)       {}).length); /* 1 */
console.log((function(a, b)    {}).length); /* 2 etc. */

console.log((function(...args) {}).length); 
// 0, rest parameter is not counted

console.log((function(a, b = 1, c) {}).length);
// 1, only parameters before the first one with 
// a default value is counted

规范

Specification Status Comment
ECMAScript 1st Edition (ECMA-262) Standard Initial definition. Implemented in JavaScript 1.1.
ECMAScript 5.1 (ECMA-262)
Function.length
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
Function.length
Standard The configurable attribute of this property is now true.
ECMAScript Latest Draft (ECMA-262)
Function.length
Draft  

浏览器兼容

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
lengthChrome Full support YesEdge Full support 12Firefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes
Configurable: trueChrome ? Edge ? Firefox Full support 37IE ? Opera ? Safari ? WebView Android ? Chrome Android ? Firefox Android Full support 37Opera Android ? Safari iOS ? Samsung Internet Android ? nodejs ?

Legend

Full support  
Full support
Compatibility unknown  
Compatibility unknown

参见