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

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

描述

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

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

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

Function 构造器的属性

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

Function 原型对象的属性

 Function  原型对象的 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

console.log((function(a = 1, b, c) {}).length) // 0
console.log((function(b, a = 1, c) {}).length) // 1
console.log((function(b, c, a = 1) {}).length) // 2

 

规范

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  

相关链接

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
Configurable: true ? 37 (37) ? ? ?
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Configurable: true ? ? 37.0 (37) ? ? ?

参考

文档标签和贡献者

 此页面的贡献者: chudu, Ende93, guosimin, yenshen, teoli, ziyunfei, tiansh
 最后编辑者: chudu,